python排序算法之希尔排序

def xier(alist):
    #  准备工作:长度+偏移量
    n = len(alist)
    gap = n // 2
    # 外部的递归循环
    while gap >= 1:
        # 单次希尔需要进行多少个组内排序
        for i in range(gap,n):
             # 分组后组内插入排序
             while (i-gap) >= 0:
                if alist[i] > alist[i-gap]:
                    alist[i],alist[i-gap] = alist[i-gap],alist[i]
                    # 过程跟踪
                    i = i - gap
                else:
                    break
        #  递归的动作
        gap = gap // 2

if __name__ == '__main__':
    li = [5, 1, 9, 4, 2, 7, 0, 8, 3, 6]
    xier(li)
    print(li)

猜你喜欢

转载自blog.csdn.net/weixin_41896508/article/details/80808265