हमें एक 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 ]