3.简单算法python实现:希尔排序shell_sort(又称:缩小增量排序)

额外知识点:在windows10中,除了shell(cmd),power_shell,又加入了一个对于无关图的虚拟环境shell,需要自己开启

python3.5

最优时间复杂度:n的一点三次方

最坏时间复杂度:n²

稳定性:不稳定

1.希尔排序思想:

插入排序变种,设定一个gap(距离),根据距离来将数组分成数个间隔gap的小数组,对小数组进行插入排序

2.python代码实现

def shell_sort(alist):
    '''希尔排序'''
    n = len(alist)
    gap = n//2

    while gap > 0:

        for j in range(gap,n):
            i = j
            while i > 0:
                if alist[i] < alist[i-gap]:
                    alist[i],alist[i-gap] = alist[i-gap],alist[i]
                    i -= gap
                else:
                    break
        gap//=2

if __name__=='__main__':
    li = [17, 99, 31, 26, 44, 54, 55, 77, 93]

    value=shell_sort(li)
    print(li)

猜你喜欢

转载自blog.csdn.net/xm961217/article/details/88080792