• 数组排序


    1.冒泡排序(从头到尾比较相邻的两个数的大小,如果符合条件则进行比较)

    var arr = [9,8,7,6,5,4]
    var temp;
    for(var i=0;i<arr.length-1;i++){
      for(var j=0;j<arr.length-1-i;j++){
        if(arr[j]>arr[j+1]){
           temp = arr[j];
           arr[j] = arr[j+1];
           arr[j+1] = temp; 
        }
      }
    }

    2.插入排序 (插入排序的原理其实很好理解,可以类比选择排序。选择排序时在两个空间进行,等于说每次从旧的空间选出最值放到新的空间,而插入排序则是在同一空间进行)

    var arr = [19,3,22,7,55,9,3,8]
    var temp;
    for(var i=1;i<arr.length;i++){
        var index = i;
        while(index-1>=0 && arr[index - 1] >arr[index]){
            [arr[index],arr[index - 1]] = [arr[index - 1],arr[index]]
    
            index--
        }
    }

    3.快速排序(将一个杂乱无章的数组进行一个快速排序,可以先从一个数组中取一个中间值,将一个数组一分为2,左边的数组跟中间值进行比较,小的放在左边,大的放在右边。比较完毕后再次取中间值,再次比较一次类推)

    function quicksort(arr){
        if(arr.length<2){
            return arr;
        }
    
        var midIndex = arr.length%2 == 0? arr.length/2 : (arr.length+1)/2;
        var mid = arr[midIndex];
    
        var left  = [];
        var right = [];
        
        for(var i=0;i<arr.length;i++){
            if(i != midIndex && arr[i] <= mid){
                left.push(arr[i]);
            }
    
            if(i != midIndex && arr[i] > mid){
                right.push(arr[i])
            }
        }
    
        return quicksort(left).concat(mid).concat(quicksort(right))
    }

    4.希尔排序(希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止)

    var arr = [2,5,1,9,0]
    //算间隔
    var len = Math.floor(arr.length/2)
    while(len>0){
        for(var i=len;i<arr.length;i++){
            var temp = arr[i];
            for(var j=i-len;j>=0&&temp<arr[j];j=j-len){
                arr[j+len] = arr[j]
            }
            arr[j+len] = temp;
        }
        len = Math.floor(len/2)
    }
  • 相关阅读:
    小笔记系列——Excel中获取当前日期
    Git 错误:OpenSSL SSL_read: Connection was reset, errno 10054
    cmd_切换文件目录的几种方法
    Jupyter Notebook 常用操作(持续更新中……)
    chrome 浏览器书签保存
    各种开发工具注释的快捷键(持续更新中…)
    Spyder 快捷键(注释、跳转、缩进)
    ISlide插件安装后,PPT无法正常关闭
    [TimLinux] 操作系统实战45讲
    [TimLinux] vnc and go bashrc
  • 原文地址:https://www.cnblogs.com/wildccy/p/10591793.html
Copyright © 2020-2023  润新知