您的位置:首页 > 编程语言 > Python开发

python实现希尔排序

2017-10-12 20:11 471 查看
希尔排序(有时称为“递减递增排序”)通过将原始列表分解为多个较小的子列表来改进插入排序,每个子列表使用插入排序进行排序。 选择这些子列表的方式是希尔排序的关键。不是将列表拆分为连续项的子列表,希尔排序使用增量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 // 2

def 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]=currentvalue

alist = [23,45,11,67,44,98,69,57,26,58]
shell_Sort(alist)
print(alist)


时间复杂度

最优时间复杂度:根据步长序列的不同而不同

最坏时间复杂度:O(n2)

稳定想:不稳定
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  希尔排序