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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)