帮我写一个js的桶排序
时间: 2023-01-29 08:06:01 浏览: 92
下面是 JavaScript 中的桶排序的例子:
```
function bucketSort(arr, bucketSize) {
if (arr.length === 0) {
return arr;
}
// Determine minimum and maximum values
let i;
let minValue = arr[0];
let maxValue = arr[0];
for (i = 1; i < arr.length; i++) {
if (arr[i] < minValue) {
minValue = arr[i];
} else if (arr[i] > maxValue) {
maxValue = arr[i];
}
}
// Initialize buckets
const bucketCount = Math.floor((maxValue - minValue) / bucketSize) + 1;
const allBuckets = new Array(bucketCount);
for (i = 0; i < allBuckets.length; i++) {
allBuckets[i] = [];
}
// Distribute input array values into buckets
for (i = 0; i < arr.length; i++) {
allBuckets[Math.floor((arr[i] - minValue) / bucketSize)].push(arr[i]);
}
// Sort buckets and place back into input array
arr.length = 0;
for (i = 0; i < allBuckets.length; i++) {
insertionSort(allBuckets[i]);
for (let j = 0; j < allBuckets[i].length; j++) {
arr.push(allBuckets[i][j]);
}
}
return arr;
}
// Insertion sort function
function insertionSort(arr) {
for (let i = 1; i < arr.length; i++) {
let temp = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
// Test the function with an example array
const sortedArray = bucketSort([12, 23, 4, 5, 3, 2, 12, 81, 56, 95], 10);
console.log(sortedArray);
```
这个函数接受一个数组和一个桶大小作为参数。它会先找到数组中的最小值和最大值,然后初始化若干个桶。接着,它会将数组中的每个数放入对应的桶中,最后将每个桶中的数按升序排序,然后将每个桶中的数合并起来,这样
阅读全文