def shellSort(alist):# 间隔设定sublistcount = len(alist) // 2while sublistcount > 0:# 子列表排序for startposition in range(sublistcount):gapInsertionSort(alist, startposition, sublistcount)print("After increments of size", sublistcount, "The list is", alist)# 间隔缩小sublistcount = sublistcount // 2def gapInsertionSort(alist, start, gap):for i in range(start + gap, len(alist), gap):currentvalue = alist[i]position = iwhile position >= gap and alist[position - gap] > currentvalue:alist[position] = alist[position - gap]position = position - gapalist[position] = currentvaluealist = [1, 12, 3, 312, 13, 11, 14]
shellSort(alist)
print(alist)
对谢尔排序的详尽分析比较复杂,大致说是介于O(n)和O(n^2)之间
本文发布于:2024-01-30 01:14:22,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170654846418183.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |