给我用js写一个桶排序
时间: 2024-05-06 11:17:37 浏览: 70
好的,以下是用 JavaScript 实现桶排序的代码:
```javascript
function bucketSort(arr, bucketSize) {
if (arr.length === 0) {
return arr;
}
// 找到最大值和最小值
let minValue = arr[0];
let maxValue = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < minValue) {
minValue = arr[i];
} else if (arr[i] > maxValue) {
maxValue = arr[i];
}
}
// 计算桶的数量
const bucketCount = Math.floor((maxValue - minValue) / bucketSize) + 1;
const buckets = new Array(bucketCount);
for (let i = 0; i < buckets.length; i++) {
buckets[i] = [];
}
// 将元素分配到桶中
for (let i = 0; i < arr.length; i++) {
const bucketIndex = Math.floor((arr[i] - minValue) / bucketSize);
buckets[bucketIndex].push(arr[i]);
}
// 对每个桶中的元素进行排序
arr.length = 0;
for (let i = 0; i < buckets.length; i++) {
insertionSort(buckets[i]);
for (let j = 0; j < buckets[i].length; j++) {
arr.push(buckets[i][j]);
}
}
return arr;
}
function insertionSort(arr) {
for (let i = 1; i < arr.length; i++) {
const temp = arr[i];
let j = i - 1;
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
```
使用示例:
```javascript
const arr = [6, 1, 3, 2, 7, 8, 9, 0, 5, 4];
const sortedArr = bucketSort(arr, 2);
console.log(sortedArr); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
```
注意:这里的代码实现使用了插入排序对每个桶中的元素进行排序。如果你需要更高效的排序算法,可以使用快速排序或归并排序等算法。
阅读全文