经典排序算法之希尔排序

​ 希尔排序是希尔(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;
        }
    }
}
posted @ 2019-02-27 17:20  随风的博客  阅读(173)  评论(0编辑  收藏  举报