希尔排序:
def shellSort(alist):
gap=len(alist)//2
while gap>0:
for startPos in range(gap):
gapInsertionSort(alist,startPos,gap)
gap=gap//2
def gapInsertionSort(alist,startPos,gap):
for i in range(startPos+gap,len(alist),gap):
position=i
currentValue=alist[i]
while position-gap>=0 and alist[position-gap]>currentValue:
alist[position]=alist[position-gap]
position=position-gap
alist[position]=currentValue
归并排序:
def mergeSort(alist):
if len(alist)>1:
if len(alist)<=16:
alist=shellSort(alist) #一个优化,在数组个数比较小时,插入排序比归并排序更快
return alist
mid=len(alist)//2
lefthalf=alist[:mid]
righthalf=