Python如何排序,python顺序排列函数
如果要求科学计算,属于插入类排序的减增量法是什么?你知道吗?你知道吗?其实是希尔的排序法。Hill排序是Donald Shell在1959年提出的一种排序算法。Hill排序也是一种插入排序,将整个序列分成几个小的子序列进行插入排序。它是简单插入排序改进后的更高效版本,也称为约简增量排序,是最早突破O(n2)的算法之一。本文将向您介绍python中的Hill sort及其使用代码。
00-1010背景:小规模数据基本有序时,插入排序效率更高。
思路:将序列分成若干子序列进行插入排序,当序列基本有序时,对整个序列进行插入排序。
代码:
#python实现了Hill排序(一种插入排序)
#先做宏观调整,再做微观调整。
defshellSort(lst,k,reverse=False):
长度=len(lst)
Dk=k#设置一个增量Dk
whiledk0:
对于范围(dk,长度):
temp=lst[i]
j=i
whilej=dkandlst[j-dk]temp:
lst[j]
j-=dk
lst[j]=温度
dk=int(dk/2)
ifreverse==False:
returnlst
else:
lst.reverse()
Returnlst输出:
test1=[19,21,4,6,25,3,99,67,12]
测试2=[19,21,4,6,25,3,99,67,12]
data1=shellSort(test1,7)
data2=shellSort(test2,2,True)
打印(从小到大:,数据1)
Print(从大到小:,data2)希尔排序在最优时间内是复杂的,它会根据步长的顺序而变化。最坏的时间复杂度是O (n 2),在运算过程中是不稳定的。注意一下~
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。