zoukankan      html  css  js  c++  java
  • 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]
  • 相关阅读:
    《程序员修炼之道:从小工到专家》阅读笔记02
    第二阶段团队冲刺10
    第二阶段团队冲刺09
    周总结
    第二阶段团队冲刺08
    第二阶段团队冲刺07
    小A和小B和幽灵追两人(双向BFS)
    C. 真假亚瑟王(暴力)
    小A的柱状图(栈的应用,找左右边界)
    小A买彩票
  • 原文地址:https://www.cnblogs.com/e0yu/p/14707440.html
Copyright © 2011-2022 走看看