हमें एक JavaScript फंक्शन लिखना है जो संख्याओं का ऐरे लेता है और क्विक सॉर्ट एल्गोरिदम का उपयोग करके इसे सॉर्ट करता है।
क्विकसॉर्ट
यह एल्गोरिदम मूल रूप से एक डिवाइड और कंकर एल्गोरिदम है जहां हम लूप के हर पास में एक पिवट चुनते हैं और पिवट से छोटे सभी एलिमेंट्स को उसके बाएं और बड़े को दाएं रखते हैं (यदि आरोही क्रम में सॉर्ट करना है तो अन्यथा विपरीत)।
उदाहरण
const arr = [43, 3, 34, 34, 23, 232, 3434, 4, 23, 2, 54, 6, 54];
// ऐरे में एक "पिवट" एलिमेंट ढूंढें जिसकी तुलना अन्य सभी
// एलिमेंट्स से की जाए और फिर मानों के आधार पर एलिमेंट्स को
// पिवट से पहले या बाद में शिफ्ट करें
const quickSort = (arr, left = 0, right = arr.length - 1) => {
let len = arr.length, index;
if(len > 1) {
index = partition(arr, left, right)
if(left < index - 1) {
quickSort(arr, left, index - 1)
}
if(index < right) {
quickSort(arr, index, right)
}
}
return arr
}
const partition = (arr, left, right) => {
let middle = Math.floor((right + left) / 2),
pivot = arr[middle],
i = left, // ऐरे में पहले आइटम पर पॉइंटर शुरू करें
j = right // ऐरे में अंतिम आइटम पर पॉइंटर शुरू करें
while(i <= j) {
// बाएं पॉइंटर को दाएं ले जाएं जब तक बाएं पर मान
// पिवट मान से बड़ा न हो
while(arr[i] < pivot) {
i++
}
// दाएं पॉइंटर को बाएं ले जाएं जब तक दाएं पर मान
// पिवट मान से छोटा न हो
while(arr[j] > pivot) {
j--
}
// यदि बायां पॉइंटर दाएं पॉइंटर से कम या बराबर है,
// तो मान स्वैप करें
if(i <= j) {
[arr[i], arr[j]] = [arr[j], arr[i]] // ES6 डिस्ट्रक्चरिंग स्वैप
i++
j--
}
}
return i
}
console.log(quickSort(arr));
आउटपुट
कंसोल में आउटपुट -
[
2, 3, 4, 6, 23,
23, 34, 34, 43, 54,
54, 232, 3434
]