希尔排序的实质就是分组插入排序,该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率
但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位
代码如下:
这里写代码片def Shell_Insert(a):
#设定步长
step=len(a)//2
while step>0:
for i in range(step,int(len(a))):
print("i的值为%d"%(i))
while i>=step and a[i-step]>a[i]:
a[i],a[i-step]=a[i-step],a[i]
i-=step
step=step//2
return a
if __name__=="__main__":
a=[3,8,4,7,2]
b=Shell_Insert(a)
print(b)
注:由于python是“/”是除号,因此在除的时候可能会有余数,得到的值可能是一个float值,因为循环时需要int值,所有需要用“//”,“//”是整除,得到的商没有余数,符合循环。
直接插入排序
https://blog.csdn.net/logal_small/article/details/82313074