返回顶部

收藏

JavaScript版计数排序算法代码(Counting sort)

更多
function countingSort(arr, len){
    var arr_a = arr, arr_b = [], index = 0;
    var max= findMax(arr_a);//查找arr_a中的最大值
    var i, j;
    arr_b = createArr(max+1);//新那一个arr_b
    for(i = 0; i < len; i++){
        arr_b[arr_a[i]] += 1;//找出arr_a中每个值为i的元素出现的次数,存入数组arr_b的第i项
    }
    for(j = 0; j < arr_b.length; j++){
        while(arr_b[j] > 0){
            arr_a[index++] = j;//将每个元素i放在新数组的第arr_b(i)项
            arr_b[j]--;//每放一个元素就将arr_b(i)减去1
        }
    }
    return arr_a;
}
function findMax(arr){
    var pi = arr[0];
    var maxIndex;
    for(var i = 1; i < arr.length; i++){
        if(pi <= arr[i]){
            pi = arr[i];
        }
    }
    return pi;
}
function createArr(len){
    var arr = [];
    for(var i = 0; i < len; i++){
        arr[i] = 0;
    }
    return arr;
}
var src = [3,2,3,12,0,0,7,1,4,12];
var tar = countingSort(src, src.length);
console.log(tar);

标签:基数排序,counting,sort,JavaScript

收藏

0人收藏

支持

0

反对

0

发表评论