เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ของ Numbers ฟังก์ชันควรใช้อัลกอริธึมของ quicksort เพื่อจัดเรียงอาร์เรย์ในลำดับที่เพิ่มขึ้นหรือลดลง
อัลกอริธึม QuickSort
Quicksort ทำตามขั้นตอนด้านล่าง -
ขั้นตอนที่ 1 − สร้างองค์ประกอบใด ๆ เป็นเดือย (ควรเป็นอันดับแรกหรือสุดท้าย แต่องค์ประกอบใด ๆ สามารถเป็นเดือยได้)
ขั้นตอนที่ 2 − แบ่งอาร์เรย์ตามจุดหมุน
ขั้นตอนที่ 3 − ใช้การเรียงลำดับอย่างรวดเร็วบนพาร์ติชั่นด้านซ้ายซ้ำๆ
ขั้นตอนที่ 4 − ใช้การเรียงลำดับอย่างรวดเร็วบนพาร์ติชั่นด้านขวาซ้ำๆ
ความซับซ้อนของเวลาเฉลี่ยและกรณีที่ดีที่สุดของ QuickSort คือ O(nlogn) ในขณะที่ในกรณีที่เลวร้ายที่สุด ความซับซ้อนของ QuickSort อาจทำให้ช้าลงได้ถึง O(n^2)
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const arr = [5,3,7,6,2,9];
const swap = (arr, leftIndex, rightIndex) => {
let temp = arr[leftIndex];
arr[leftIndex] = arr[rightIndex];
arr[rightIndex] = temp;
};
const partition = (arr, left, right) => {
let pivot = arr[Math.floor((right + left) / 2)];
let i = left;
let j = right;
while (i <= j) {
while (arr[i] < pivot) {
i++;
};
while (arr[j] > pivot) {
j--;
};
if (i <= j) {
swap(arr, i, j); //sawpping two elements
i++;
j--;
};
};
return i;
}
const quickSort = (arr, left = 0, right = arr.length - 1) => {
let index;
if (arr.length > 1) {
index = partition(arr, left, right);
if (left < index - 1) {
quickSort(arr, left, index - 1);
};
if (index < right) {
quickSort(arr, index, right);
};
}
return arr;
}
let sortedArray = quickSort(arr);
console.log(sortedArray); ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ 2, 3, 5, 6, 7, 9 ]