1.希尔排序
希尔排序,是从0位置开始依次取数组中步长gap的两个数,然后做比较大小,如果逆序就交换。初始gap是数组长度除以2,以后是每次迭代除以2. 当最后gap为1时,比较完,数组就排序好了。
如上的数组[2,4,1,0,9,3,5,7,6],用希尔排序,gap分为4,2,1,最后把数组排序好。相同的颜色表示两个数据交换位置。
时间复杂度计算: 迭代计算的次数等于 取整,每次比较n次,总体复杂度为 n*
算法python实现:
def hill(arr): #arr 是list
if arr == None or arr.__len__() == 0:
return
len = arr.__len__()
gap = len // 2
while gap > 0:
for i in range(0,len):
if i + gap <