python实现希尔排序

来源:互联网 发布:淘宝如何做展现词 编辑:程序博客网 时间:2024/06/05 14:24

希尔排序(有时称为“递减递增排序”)通过将原始列表分解为多个较小的子列表来改进插入排序,每个子列表使用插入排序进行排序。 选择这些子列表的方式是希尔排序的关键。不是将列表拆分为连续项的子列表,希尔排序使用增量i(有时称为 gap),通过选择 i 个项的所有项来创建子列表。

def shell_Sort(alist):    sublistcount = len(alist)//2    while sublistcount > 0:      for startposition in range(sublistcount):        InsertionSort(alist,startposition,sublistcount)      print("After increments of size",sublistcount,                                   "The list is",alist)      sublistcount = sublistcount // 2def InsertionSort(alist,start,gap):    for i in range(start+gap,len(alist),gap):        currentvalue = alist[i]        position = i        while position>=gap and alist[position-gap]>currentvalue:            alist[position]=alist[position-gap]            position = position-gap        alist[position]=currentvaluealist = [23,45,11,67,44,98,69,57,26,58]shell_Sort(alist)print(alist)

时间复杂度

最优时间复杂度:根据步长序列的不同而不同
最坏时间复杂度:O(n2)
稳定想:不稳定

原创粉丝点击