बकेट सॉर्ट आकार n की सरणी को k बकेट में विभाजित करके काम करता है जो तत्व मानों की एक विशिष्ट रेंज रखते हैं।
फिर, इन बकेट को एक सॉर्टिंग एल्गोरिदम का उपयोग करके सॉर्ट किया जाता है जिसे अपेक्षित इनपुट आकार के आधार पर चुना जा सकता है।
हम इस एल्गोरिदम को निम्नानुसार वर्णित कर सकते हैं:
एल्गोरिदम:
प्रारंभिक bucketSort फ़ंक्शन बनाएं i, min, max, और बकेट आकार के लिए चर बनाएं न्यूनतम और अधिकतम मान ढूंढें बकेट की मात्रा बनाएं मानों को सही बकेट में डालें बकेट को सॉर्ट करें
उदाहरण
इसका कोड निम्नलिखित होगा:
const arr = [32, 6, 34, 4, 78, 1, 6767, 4, 65, 34, 879, 7];
const bucketSort = arr => {
if (arr.length === 0) {
return arr;
}
let i,
minValue = arr[0],
maxValue = arr[0],
bucketSize = 5;
arr.forEach(function (currentVal) {
if (currentVal < minValue) {
minValue = currentVal;
} else if (currentVal > maxValue) {
maxValue = currentVal;
}
})
let bucketCount = Math.floor((maxValue - minValue) / bucketSize) + 1;
let allBuckets = new Array(bucketCount);
for (i = 0; i < allBuckets.length; i++) {
allBuckets[i] = [];
}
arr.forEach(function (currentVal) {
allBuckets[Math.floor((currentVal - minValue) / bucketSize)].push(currentVal);
});
arr.length = 0;
allBuckets.forEach(function(bucket) {
insertion(bucket);
bucket.forEach(function (element) {
arr.push(element)
});
});
return arr;
}
const insertion = arr => {
let length = arr.length;
let i, j;
for(i = 1; i < length; i++) {
let temp = arr[i];
for(j = i - 1; j >= 0 && arr[j] > temp; j--) {
arr[j+1] = arr[j];
}
arr[j+1] = temp;
}
return arr;
};
console.log(bucketSort(arr));
आउटपुट
कंसोल में आउटपुट:
[ 1, 4, 4, 6, 7, 32, 34, 34, 65, 78, 879, 6767 ]