码迷,mamicode.com
首页 > 编程语言 > 详细

经典排序算法之希尔排序

时间:2019-02-27 17:44:36      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:sort   操作   希尔排序   讲解   script   增量   插入排序   http   log   

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

经典排序算法之希尔排序

标签:sort   操作   希尔排序   讲解   script   增量   插入排序   http   log   

原文地址:https://www.cnblogs.com/skyxu123/p/10445150.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!