桶排序
function bucketSort(arr) {
let result = []
let minValue = arr[0]
let maxValue = arr[0]
for (let i = 0; i < arr.length; i++) {
if (arr[i] < minValue) {
minValue = arr[i]
}
if (arr[i] > maxValue) {
maxValue = arr[i]
}
}
let bucketCount = Math.floor((maxValue - minValue) / arr.length) + 1
let bucket = new Array(bucketCount)
for (let i = 0; i < bucketCount; i++) {
bucket[i] = []
}
for (let i = 0; i < arr.length; i++) {
bucket[Math.floor((arr[i] - minValue) / arr.length)].push(arr[i])
}
for (let i = 0; i < bucketCount; i++) {
bucket[i].sort()
for (let j = 0; j < bucket[i].length; j++) {
result.push(bucket[i][j])
}
}
return result
}
console.log(bucketSort([0, 5, 4, 3, 20, 1, 2, 6, 4, 7, 6]));