จัดเรียงอาร์เรย์แรกให้เรียงน้อยไปมาก แต่ย้ายสมาชิกที่มีในอาร์เรย์ที่สอง (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 ก่อน