对希尔排序的原理理解(附图解)

希尔排序,它是简单插入排序经过改进后的一个更高效的版本。
希尔排序属于插入排序。
希尔排序也称为缩小增量排序。

思想:

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

图示:
按4进行逻辑上的 分组
增量为4
每组进行排序:

这就是第一次按照4排序完得到的结果
12345786
<mark>然后再上个增量上缩小一半变成2</mark>


上图是第二次增量为2的逻辑分组
接下来进行第二次的希尔排序

第二次希尔排序的结果为:
12435687

继续
第三次再次缩小一半增量为1
逻辑分组:

进行每一组(第一组)的排序后:

ok

用python实现希尔排序

def shell_sort(arr):
    n = len(arr)
    gap = n//2
    while gap > 0:
        for i in range(gap, n):
            while i >= gap and arr[i] < alist[i - gap]:
                arr[i], arr[i - gap] = arr[i - gap], arr[i]
                i -= gap
                #print(arr)
        gap //= 2
    return arr
全部评论

相关推荐

嵌入式小辣鸡:包装好一点,校内的奖项可以不用写,校内项目经历最后两点写的太差了,详细讲一下内容,名字变一下。只需要写项目实现了什么,自己在其中做了什么就好,查看图片
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务