python实现希尔排序

来源:互联网 发布:淘宝哪家店的檀香靠谱 编辑:程序博客网 时间:2024/06/07 19:47

希尔排序也叫缩小增量排序,是直接插入排序的一种高效增量版本
希尔排序是把记录按下标的一定增量进行分组,对每组使用直接插入排序:随着增量逐渐减小,每组包含的关键词越来越多,当增量减至为1时,整个文件恰被分成一组,算法便终止。

希尔排序过程

将数组列在一个表中并对列分别进行插入排序,重复这过程,不过每次用更长的列(步长更长了,列数更少了)来进行。最后整个表就只有一列了。将数组转换至表是为了更好地描述算法,算法本身还是对数组进行排序

实现

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
原创粉丝点击