排序之希尔排序
假设将数从小到大排序
希尔排序是对插入排序的改进,将未排序数按照相隔某个增量分成若干个子序列,在每个子序列中进行插入排序,一次排序后减小增量,重复以上操作,直到增量减小为一,再进行一次插入排序,则排序完成。
由于分组时的间隔存在,所以排序时两个间隔较远的数可以用一次交换就实现,用更少的交换操作就实现了排序,所以在处理更大的数据时,希尔排序与插入排序相比优势明显.
代码实现:
def shellSort(l):
gap = len(l) // 2
while gap >= 1:
i = 0
for i in range(len(l)):
while i + gap < len(l):
if l[i] >= l[i + gap]:
l[i], l[i + gap] = l[i + gap], l[i]
i += 1
gap //= 2
return l
本文为自己学习时所写的小笔记,水平有限,内容仅供参考,如有错误,欢迎指正