希尔排序
- 希尔排序(Shell Sort)是一种分组插入排序算法
- 首先取一个整数d1 =n/2,将元素分为d1 个组,每组相邻量元素之间距离为d1 ,在各组内进行直接插入排序;
- 取第二个整数d2 = d1 /2,重复上述分组排序过程,直到di =1,即所有元素在同一组内进行直接插入排序。
- 希尔排序每趟并不使某些元素有序,而是整体数据却来越近有序;最后一趟排序使得所有数据有序
代码示例:
def insert_sort_gap(li,gap)L:
tmp = li[i]
j = i - gap
while j >= 0 and li[j] > tmp:
li[j+gap] = li[j]
j -= gap
li[j+gap] = tmp
def shell_sort(li):
d = len(li) // 2
while d >= 1:
insert_sort_gap(li,d)
d //= 2
#测试
li = list(range(1000))
import random
random.shuffle(li)
shell_sort(li)
print(li)
代码示例2:
def shell_sort(li):
gap = len(li) // 2
while gap > 0:
for i in range(gap,len(li)):
tmp = li[i]
j = i - gap
while j >= 0 and tmp < li[j]:
li[j+gap] = li[j]
j -= gap
li[j+gap] = tmp
gap
计数排序
- 对列表进行排序,已知列表中的数范围都在0到100之间。设计时间复杂度为O(n)算法