definsertionSort(alist):for index inrange(1,len(alist)):
currentvalue = alist[index]
position = index
while position >0and alist[position-1]> currentvalue:
alist[position]= alist[position-1]
position -=1
alist[position]= currentvalue
defshellSort(alist):
sublistcount =len(alist)//2while sublistcount >0:for startposition inrange(sublistcount):
gapInsertionSort(alist, startposition, sublistcount)print("增量为{},排序后为{}".format(sublistcount, alist))
sublistcount = sublistcount //2defgapInsertionSort(alist,start, gap):for i inrange(start + gap,len(alist),gap):
currentvalue = alist[i]
position = i
while position >= gap and alist[position - gap]> currentvalue:
alist[position]= alist[position - gap]
position = position - gap
alist[position]= currentvalue
defmerge(a, b):
c =[]
h = j =0while j <len(a)and h <len(b):if a[j]< b[h]:
c.append(a[j])
j +=1else:
c.append(b[h])
h +=1if j ==len(a):for i in b[h:]:
c.append(i)else:for i in a[j:]:
c.append(i)return c
defmerge_sort(lists):iflen(lists)<=1:return lists
middle =len(lists)//2
left = merge_sort(lists[:middle])
right = merge_sort(lists[middle:])return merge(left, right)if __name__ =='__main__':
a =[14,2,34,43,21,19]print(merge_sort(a))
排序冒泡排序O(n^2)选择排序O(n^2)插入排序O(n^2)希尔排序O(n)-O(n^2)归并排序O(nlogn)快速排序O(nlogn)-O(n^2)1、冒泡排序1.1、常规def bubbleSort(alist): for epoch in range(len(alist) - 1, 0, -1): for i in range(epoch)...