桶排序


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/**
* 桶排序(只支持整数)
* max:数组的最大数值,必须大于0, 整数
* sortArry:排序数组 数组
* type:排序方式,默认1:从小到大,0:从大到小
* 返回排序后数组,异常情况返回false
**/
function bucketsort(max,sortArray,type = 1){
if(max <=0 || !sortArray){
return false;
}else{
let bucketArray = new Array(max);
let tempArray = [];
sortArray.forEach((item,index)=>{
bucketArray[item] = (bucketArray[item]?bucketArray[item]:0)+1;
})
bucketArray.forEach((item,index)=>{
if(item && item >0){
for(let i=0;i<item;i++){
if(type == 1){//从小到大
tempArray.push(index)
}else{//从大到小
tempArray.unshift(index)
}
}
}
})
return tempArray
}
}