def shell_sort(alist):
n = len(alist)
gap = n//2
while gap >= 1: # gap到0之前,插入算法执行的次数
for i in range(gap,n): #一个for循环将所有子序列都处理
i = j
while i > 0:
if alist[i] < alist[i-gap]:
alist[i],alist[i-gap]=alist[i-gap],alist[i]
i -= gap
else:
break
gap//=2
def quick_sort(alist,first,last):
mid_value = alist[first]
low = first
high = last
while low < high:
while low < high and alist[high] >= mid_value:
high -= 1
alist[low] = alist[high]
while low < high and alist[low] < mid_value:
low += 1
alist[high] = alist[low]
#执行完循环,low=high
alist[low] = mid_value
quick_sort(alist,first,low-1) #对左边快速排序
quick_sort(alist,low+1,last) #对右边快速排序
希尔排序原理先分组,再插入排序实现def shell_sort(alist): n = len(alist) gap = n//2 while gap >= 1: # gap到0之前,插入算法执行的次数 for i in range(gap,n): #一个for循环将所有子序列都处理 i = j while i > 0: if alist[i] < alist[i-gap]: alist[i],alist[i-gap]=alist[i