插入排序:如果原始数据基本有序 则插入排序的时间复杂度就会很小
希尔排序:
1:元素多的时候 元素少
2:元素多的时候 元素基本有序
实现:
#注意点:将增量的每一个元素往自己的组里面去插,而非一个一个组中进行排序
def shellSort(ls):
mLen = len(ls)
interval = mLen//2
while interval > 0:
#外层循环 表示进行多少次切分
for i in range(interval, mLen, 1):
#这里循环里面进行插入排序
value = ls[i]
index = i-interval
while index > -1 and value < ls[index]:
ls[index+interval] = ls[index]
index = index - interval
ls[index + interval] = value
interval = interval // 2
问题:
这个问题进行希尔排序已经退化到插入排序 希尔排序的最坏情况
问题:
这个问题属于进行希尔排序的最好情况