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

การจัดเรียงแบบ Priority Sort - JavaScript

จัดเรียงอาร์เรย์แรกให้เรียงน้อยไปมาก แต่ย้ายสมาชิกที่มีในอาร์เรย์ที่สอง (priority array) ไปอยู่ข้างหน้าสุด

ตัวอย่าง

arr1 = [5, 4, 3, 2, 1]
arr2 = [2, 3]  // priority elements
Output: [2, 3, 1, 4, 5]

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

const arr1 = [5, 4, 3, 2, 1];
const arr2 = [2, 3];

const sorter = (a, b, arr) => {
  if (arr.includes(a)) return -1;  // a ใน priority → มาก่อน
  if (arr.includes(b)) return 1;   // b ใน priority → มาก่อน
  return a - b;                    // ไม่ใช่ priority → เรียงปกติ
};

const prioritySort = (arr1, arr2) => {
  arr1.sort((a, b) => sorter(a, b, arr2));
};

prioritySort(arr1, arr2);
console.log(arr1);

การทำงานของ Comparator

  • ถ้า a อยู่ใน priority array → a มาก่อน (-1)
  • ถ้า b อยู่ใน priority array → b มาก่อน (1)
  • ทั้งคู่ไม่ได้อยู่ใน priority → เรียงตามค่า (a - b)

ผลลัพธ์

[ 2, 3, 1, 4, 5 ]

ประสิทธิภาพ: includes() ใน comparator ทำให้ O(n² log n) ควรแปลง priority array เป็น Set ก่อน