ใน Java จะย้าย 0 ทั้งหมดไปยังจุดสิ้นสุดของ Array Preserving Order of an Array ได้อย่างไร? [2 วิธี]

เผยแพร่แล้ว: 2020-12-31
ใน Java จะย้าย 0 ทั้งหมดไปยังจุดสิ้นสุดของ Array Preserving Order of an Array ได้อย่างไร? [2 วิธี]

ฉันเคยเล่นกับปัญหาในการ moving all 0's to end ของอาร์เรย์ในการสัมภาษณ์ต่างๆ ในรูปแบบต่างๆ บางครั้งฉันขอให้ย้าย 0 ทั้งหมดไปที่ด้านหน้าของอาร์เรย์ เรียงลำดับอาร์เรย์โดยไม่มีโครงสร้างข้อมูลใดๆ เป็นต้น

ในบทช่วยสอนนี้ เราจะพูดถึงตัวอย่างง่ายๆ ของการย้าย 0 ทั้งหมดเพื่อสิ้นสุดการรักษาลำดับของอาร์เรย์ มีสองวิธี

แนวทาง-1)

ตรรกะการแบ่งพาร์ติชัน QuickSort จุดหมุนคืออะไร?

  • Pivot point เป็นองค์ประกอบหลักใน Quick Sort Algorithm ดำเนินการและแบ่งพาร์ติชันคอลเลกชันรอบจุดหมุน
  • โดยจะจัดเรียงองค์ประกอบอาร์เรย์ที่ใหญ่กว่าเดือยที่อยู่ก่อนหน้า และองค์ประกอบที่ใหญ่กว่าเดือยจะอยู่ด้านหลัง
  • ดำเนินการต่อผ่านลูปเพื่อจัดเรียงอาร์เรย์

ตรรกะนั้นง่ายมาก:

  • วนซ้ำผ่านอาร์เรย์
  • หาก array[i] ไม่เท่ากับ 0 ให้สลับกับดัชนีปัจจุบัน
  • ถ้า array[i] == 0 ให้ข้าม loop
  • ในกรณีของเรา 0 is a Pivot point
  • ทุกครั้งที่เราพบ 0 ตัวนับจุดหมุนจะเพิ่มขึ้นและองค์ประกอบจะเคลื่อนที่ก่อนจุดหมุน

แนวทาง-2)

  • สร้างอาร์เรย์ใหม่ที่มีขนาดเท่ากัน
  • วนซ้ำผ่าน Array และข้ามการเพิ่ม 0

นี่คือโปรแกรมที่สมบูรณ์:

CrunchifyMoveAll0ToEnd.java

เอาต์พุตคอนโซล Eclipse:

แจ้งให้เราทราบหากคุณรู้วิธีที่ดีกว่าในการแก้ปัญหานี้ ฉันชอบที่จะได้ยินความคิดของคุณ