经典排序算法之希尔排序

Posted skyxu123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典排序算法之希尔排序相关的知识,希望对你有一定的参考价值。

? 希尔排序是希尔(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;
        }
    }
}

以上是关于经典排序算法之希尔排序的主要内容,如果未能解决你的问题,请参考以下文章

十大经典排序之:插入排序 |希尔排序

算法讲解Scartch经典算法4之--希尔排序算法

经典排序算法系列之插入排序和希尔排序----小白理解(python)

白话经典算法系列之三 希尔排序的实现

经典排序之希尔排序

十大经典排序算法总结(希尔排序)