Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การจัดเรียงอาร์เรย์แบบสลับกัน (Alternate Sort) ใน JavaScript

บทความนี้สาธิตการจัดเรียงอาร์เรย์ให้เป็นรูปแบบ arr[0] < arr[1] > arr[2] < arr[3] ... (alternating low-high)

ตัวอย่าง

input: [1, 2, 3, 4, 5, 6]
output: [3, 6, 2, 5, 1, 4] (หนึ่งในคำตอบที่เป็นไปได้)

ตัวอย่างโค้ด

const arr = [1, 2, 3, 4, 5, 6];

const alternateSort = (arr = []) => {
  arr.sort((a, b) => a - b);
  const N = arr.length;
  let mid = Math.floor(N / 2);
  if (N % 2 !== 0) {
    mid++;
  }
  const small = arr.splice(0, mid);
  const big = arr.splice(0, arr.length);
  for (let i = 0; i < N; i++) {
    if (i % 2 === 0) {
      arr[i] = small.pop();
    } else {
      arr[i] = big.pop();
    }
  }
};

alternateSort(arr);
console.log(arr);

ผลลัพธ์

[3, 6, 2, 5, 1, 4]

คำอธิบาย

เรียงอาร์เรย์จากน้อยไปมาก แบ่งเป็น 2 ครึ่ง: ครึ่งเล็ก (small) และครึ่งใหญ่ (big)

จากนั้นสลับกันวาง: index คู่เอาจาก small.pop() (ค่ามากที่สุดของครึ่งเล็ก) index คี่เอาจาก big.pop() (ค่ามากที่สุดของครึ่งใหญ่)

ผลลัพธ์จะเป็น low-high-low-high pattern