-
冒泡排序
def bubble_sort(li): for i in range(len(li)-1): ischanged=True for j in range(len(li)-i-1): if j+1<=len(li) and li[j]>li[j+1]: li[j],li[j+1]=li[j+1],li[j] ischanged=False if ischanged: return
- 快排
def partition(li,left,right): tmp=li[left] while left<right: while left<right and li[right]>=tmp: right-=1 li[left] = li[right] while left<right and li[left]<=tmp: left+=1 li[right]=li[left] li[left]=tmp return left def _quick_sort(li,left,right): if left<right: mid=partition(li,left,right) _quick_sort(li,left,mid) _quick_sort(li,mid+1,right)
- 堆排序
def sift(li,low,high): i=low j=2*i+1 tmp=li[i] while j<=high: if j+1<=high and li[j+1]>li[j]: j=j+1 if tmp<li[j]: #注意细节,li[j]大于tmp li[i]=li[j] i=j j=2*i+1 else: break li[i] = tmp def heap_sort(li): ''' help me ''' n=len(li)-1 for i in range((n-1)//2,-1,-1): sift(li,i,n) for i in range(n,-1,-1): li[i],li[0]=li[0],li[i] sift(li,0,i-1)
- 归并排序