zoukankan      html  css  js  c++  java
  • 经典排序算法之希尔排序

    ​ 希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。希尔排序适合数据量中等情况,几十个到几万个。

    ​ 网上看了好久才彻底明白希尔排序是什么,简单的说将就是按照步进对数据进行分组,对每组分别进行插入排序,直到步进是1的时候则全部完成。在此感谢 dreamcatcher-cx的博客 的讲解。

    function sortShell(arr){
        let gap, i, j;
        let tmp;
        // 增量gap,并逐步缩小增量
        for (gap = arr.length>>1; gap>0; gap>>=1){
            //从第gap个元素,逐个对其所在组进行直接插入排序操作
            for (i = gap; i < arr.length; i++){
                tmp = arr[i];
                for (j = i - gap; j>=0 && arr[j] > tmp; j-=gap){
                    arr[j+gap] = arr[j];
                }
                arr[j+gap] = tmp;
            }
        }
    }
    
  • 相关阅读:
    Go语言
    Go语言
    electron-builder vue3 用户自定义安装目录
    提取页面中的style标签内容
    px2rpx | px转rpx
    js EventBus
    select 下拉选择多个值
    keep-alive页面缓存
    js适配移动端页面
    vue日常问题记录
  • 原文地址:https://www.cnblogs.com/skyxu123/p/10445150.html
Copyright © 2011-2022 走看看