提示:默默研究技术的无业游民
一、希尔排序是什么?
废话不多说,直接上代码
二、使用步骤
1.直接上代码
代码如下(示例):
if __name__=='__main__':
arr = [4,1,99,7,9,5,341,2,-1,-3,-32,8,-100,0,6,-2,3,455]
m=len(arr)
n=int(m/2)
while(n>0):
for i in range(n):
tmp = arr[i]
while( i < m-n):
tmp=arr[i+n]
while(i>=0):
if tmp<arr[i]:
arr[i+n]=arr[i]
i=i-n
else:
break
arr[i+n]=tmp
i=i+n
n=int(n/2)
print(arr)
总结
1.先计算数组长度
2.我用的2为基数均分的,也可以用其他基数均分,这里就以2为基数均分
3.while是记录均分多少次的,必须这么理解,while要经过几次均分,最后跳出循环。
4.重点来了!!!
我这里想了好久好久,进入for循环,以n开始,数组长度结尾
如果后面小于前面 那么就交换位置
i=i-n !!!!!!!!!!!!!!!!!!!这里很重要 必须自己想通
arr[i]=tmp这个就是插入进去了
思路非常简单 必须自己揣摩
师父带进门
修行靠个人