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]
  • 相关阅读:
    [EOJ]2019 ECNU XCPC March Selection #1
    [模板]宏定义
    [POJ]poj1961,poj2406(KMP)
    [模板]KMP
    [CF]Avito Cool Challenge 2018
    [CF]Codeforces Round #528 Div.2
    [POJ]POJ1328(贪心)
    洛谷 P3808 【模板】AC自动机(简单版) 题解
    中科院的难题 题解
    【转】洛谷 P3722 [AH2017/HNOI2017]影魔 题解
  • 原文地址:https://www.cnblogs.com/e0yu/p/14707440.html
Copyright © 2011-2022 走看看