/**
* 桶排序
* 将一系列数据划分到固定数量的桶中,对每个桶进行排序,最后将桶连接
* 需要知道列表中的最大值和最小值,确定桶的数量
* 对每个桶的排序,可以用其他排序方法
* @param {*} arr
*/
function bucketSort(arr) {
var length = arr.length
var num = 5
var max = Math.max.apply(null, arr)
var min = Math.min.apply(null, arr)
var buckets = []
var space = (max - min + 1) / num
for (var i = 0; i < length; i++) {
var index = Math.floor((arr[i] - min) / space)
if (!buckets[index]) {
buckets[index] = []
}
buckets[index].push(arr[i])
//对桶中数据进行快速排序
buckets[index] = quickSort(buckets[index])
}
var result = []
for (var x = 0; x <= num; x++) {
if (buckets[x]) {
result = result.concat(buckets[x])
}
}
console.log(result)
}
// bucketSort(arr)
网友评论