js----排序算法

最近在学习一些常见的算法:

一、冒泡算法

var arr,item1,item2; 
arr = [4,1,3,5,2,8,6];
for(var i=0; i<arr.length; ++i){
    for(var j=0; j<arr.length - 1 - i; ++j){
        item1 = arr[j];
        item2 = arr[j+1];
        if(item1 > item2){
            arr[j] = item2;
            arr[j+1] = item1;
        }
    }
}
console.log(arr);
arr = [4,1,3,5,2,8,6];
for(var i=0; i<arr.length; ++i){
    for(var j=0; j<arr.length - 1 - i; ++j){
        var num = arr[j];
        if(arr[j] > arr[j+1]){
            arr[j] = arr[j+1];
            arr[j+1] = num;
        }
    }
}
console.log(arr);

二、快速排序

var arr = [4,1,3,5,2,8,6];
function quick(arr){
    if(arr.length<=1){
        return arr;
    }
    var index = Math.floor(arr.length/2);
    var middle = arr.splice(index,1)[0];//获取删除的数字
    var left = [],right = [];
    for(var i=0; i<arr.length;++i){
        if(arr[i] < middle){
            left.push(arr[i]);
        }else{
            right.push(arr[i]);
        }
    }
    return quick(left).concat([middle],quick(right));
}
console.log(quick(arr)); // [1, 2, 3, 4, 5, 6, 8]

三、计数排序

var arr = [4,1,2,3,5,2,8,6];
function count(arr){
    var json = {};
    for(var i in arr){
        if(!json[arr[i]]){
            json[arr[i]] = 1;
        }else{
            json[arr[i]]++;
        }
    }
    var index = 0;
    for(var i in json){
        while(json[i] > 0){
            arr[index] = Number(i);
            json[i]--;
            index++;
        }
    }
    return arr;
}
console.log(count(arr)); // [1, 2, 2, 3, 4, 5, 6, 8]

四、选择排序

var arr = [4,1,3,5,2,8,6];
function select(arr){
    var index;
    for(var i=0; i<arr.length-1; ++i){
        index = i;
        for(var j=i+1; j<arr.length; ++j){
            if(arr[index] > arr[j]){
                index = j;
            }
        }
        if(index != i){
            var temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }
    }
    return arr;
}
console.log(select(arr)); // [1, 2, 3, 4, 5, 6, 8]

 

posted @ 2021-04-27 09:13  帅到要去报警  阅读(54)  评论(0编辑  收藏  举报