Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

In-place Algorithm เพื่อย้ายศูนย์ไปยังจุดสิ้นสุดของรายการใน JavaScript


สมมติว่าเราได้รับอาร์เรย์ของจำนวนเต็ม สมมุติว่า arr เราจำเป็นต้องเขียนฟังก์ชันที่ทำให้ศูนย์ทั้งหมดอยู่ด้านหลังอาร์เรย์โดยแก้ไขรายการในตำแหน่ง

ฟังก์ชันควรทำในลักษณะที่การเรียงลำดับสัมพัทธ์ขององค์ประกอบอื่นยังคงเหมือนเดิม

ตัวอย่างเช่น −

หากอาร์เรย์อินพุตเป็น −

const arr = [0, 11, 0, 22, 67];

ดังนั้นควรแก้ไขอาร์เรย์เป็น −

const output = [11, 22, 67, 0, 0];

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const arr = [0, 11, 0, 22, 67];
const moveZeroToEnd = (arr = []) => {
   const swap = (array, ind1, ind2) => {
      const temp = array[ind1];
      array[ind1] = array[ind2];
      array[ind2] = temp;
   };
   let j = 0;
   for (let i = 0; i < arr.length; ++ i) {
      if (arr[i] !== 0) {
         swap(arr, i, j++);
      }
   }
   while (j < arr.length) {
      arr[j++] = 0;
   };
};
moveZeroToEnd(arr);
console.log(arr);

ผลลัพธ์

ต่อไปนี้เป็นเอาต์พุตคอนโซล -

[11, 22, 67, 0, 0]