首页 > 编程语言 > 详细

希尔排序

时间:2020-05-07 21:08:19      阅读:54      评论:0      收藏:0      [点我收藏+]
‘‘‘
将数组列在一个表中,分别进行插入排序。先以步长为一半,列表。然后对每一列进行排序。
然后将排好序的,再按照步长为一半,列表进行排序。
最后进行插入排序
‘‘‘
def shell_sort(lst):
    n = len(lst)

    gap = n//2 #按照总长度的一半进行分列,然后进行 行排序
    while gap > 0:
        for i in range(gap,n):
            j = i
            #按照步长进行排序
            while j>= gap and lst[j-gap] > lst[j]:#对索引位置进行有规律的使用
                # j-gap表示每一列上的元素,j发生变化,列发生变化
                lst[j-gap],lst[j] = lst[j],lst[j-gap]
                j -= gap#向上一行
        gap = gap//2#缩小比较的列的个数

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

2020-05-07

希尔排序

原文:https://www.cnblogs.com/hany-postq473111315/p/12845247.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!