桶排序

2018-01-13  本文已影响0人  涅槃快乐是金

/**
 * 桶排序(只支持整数)
 * 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
    }
}
上一篇下一篇

猜你喜欢

热点阅读