实现桶排序的js代码
function bucketSort(arr,bucketCount){
result = []
minValue = arr[0]
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]
}
}
// 求得每个桶的size
bucketSize = Math.floor((maxValue-minValue)/bucketCount)+1
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)/bucketCount)].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
}
// 测试
arr = [5,4,3,2,1,8,6,4,7,6]
console.log(bucketSort(arr,3))