บทความนี้สาธิตการจัดเรียง sorted array ใหม่เป็นรูปแบบ: max, min, 2nd max, 2nd min, ...
ตัวอย่าง
input: [1, 2, 3, 4, 5, 6] output: [6, 1, 5, 2, 4, 3]
ตัวอย่างโค้ด
const arr = [1, 2, 3, 4, 5, 6];
const alternativeSort = (arr = []) => {
const res = [];
let left = 0;
let right = arr.length - 1;
while (res.length < arr.length) {
res.push(arr[right]);
if (left !== right) {
res.push(arr[left]);
}
left++;
right--;
}
return res;
};
console.log(alternativeSort(arr));
ผลลัพธ์
[6, 1, 5, 2, 4, 3]
คำอธิบาย
Two pointers: left=0, right=n-1 สลับ push right แล้ว left จนครบ
Time: O(n), Space: O(n) สำหรับ result array
หากต้องการ in-place ต้องใช้ encoding technique (เก็บ 2 ค่าใน 1 index)