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

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

思想:

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

图示:
在这里插入图片描述按4进行逻辑上的 分组
增量为4
每组进行排序:
在这里插入图片描述
这就是第一次按照4排序完得到的结果
12345786
然后再上个增量上缩小一半变成2

在这里插入图片描述
上图是第二次增量为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
发布了893 篇原创文章 · 获赞 1284 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/qq_35456045/article/details/105335419