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 } }
|