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]
  • 相关阅读:
    ES 内存深度解析
    Spring Cache介绍和使用
    mysql 索引及索引创建原则
    mysql中四种存储引擎的区别和选择
    Java中数组、List、Set互相转换
    COGS 1151 活动安排
    洛谷P1650赛马与codevs 2181 田忌赛马
    5月3日济南清北学堂随堂测试题目
    codevs 1206 保留两位小数
    codevs 1203 判断浮点数是否相等
  • 原文地址:https://www.cnblogs.com/e0yu/p/14707440.html
Copyright © 2011-2022 走看看