python数据结构与算法第十一天希尔排序

Posted liuzhiqaingxyz

tags:

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

1.希尔排序的原理

技术分享图片

2.代码实现

def shell_sort(alist):
    n = len(alist)
    # 初始步长
    gap = n / 2
    while gap > 0:
        # 按步长进行插入排序
        for i in range(gap, n):
            j = i
            # 插入排序
            while j>=gap and alist[j-gap] > alist[j]:
                alist[j-gap], alist[j] = alist[j], alist[j-gap]
                j -= gap
        # 得到新的步长
        gap = gap / 2

alist = [54,26,93,17,77,31,44,55,20]
shell_sort(alist)
print(alist)

注意:

(1)希尔排序采用的是先拆分后合并的思想,拆分的时候是间隔拆分

 

3.时间复杂度

最优时间复杂度:根据步长序列的不同而不同

最坏时间复杂度:O(n2)

稳定想:不稳定

以上是关于python数据结构与算法第十一天希尔排序的主要内容,如果未能解决你的问题,请参考以下文章

Python数据结构与算法(15)---希尔排序

Python数据结构与算法(15)---希尔排序

python 学习笔记 -- 数据结构与算法 希尔排序 Shell Sort

算法与数据结构--经典排序算法Python实现

[新星计划] Python手撕代码 | 十大经典排序算法

[新星计划] Python手撕代码 | 十大经典排序算法