def insert_sort(li, gap):
li_len = len(li)
for i in range(gap, li_len): # 无序区[i,li_len)
j = i - gap # 有序区的索引
tmp = li[i]
while j >= 0 and tmp < li[j]: # 只要当前抽到的元素小于有序区中的元素,有效区中的元素就后移gap位
li[j + gap] = li[j]
j -= gap
else:
li[j + gap] = tmp
@clocked
def shell_sort(li): # 插入排序的进一步优化
d = len(li) // 2
while d >= 1:
insert_sort(li, d)
d //= 2
python实现希尔排序(选择排序的进一步优化)
于 2022-05-07 09:48:01 首次发布