1. 程式人生 > >最重要的演算法

最重要的演算法

快速排序

def quick_sort(li,left,right):
    if left<right:
        mid=partition(li,left,right) #首先給li中最左邊的元素歸位,返回歸位後元素的索引 
        quick_sort(li,left,mid-1)  #接著給歸位了的元素左邊的,左端列表的,最左側元素進行歸位
        quick_sort(li,mid+1,right) #給歸位了的元素的右邊的,右端列表的,最左側元素進行歸位


def partition(li,left,right):
    tmp
=li[left] while left<right: #從右邊找比tmp小的 while left<right and li[right]>=tmp: #當右邊比tmp大時,一直找,直到找到比tmp小的數 right-=1 li[left]=li[right] #當找到了比tmp小的數就把右邊的值賦值給左邊 #從左邊找比tmp大的 while left<right and li[left]<=tmp: #當左邊的數比tmp小時,一直找,直到找到比tmp大的數
left+=1 li[right]=li[left] #當找到了比tmp大的數,把左邊的大數,賦值給右邊 li[left]=tmp return left import random l=list(range(0,13)) random.shuffle(l) quick_sort(l,0,len(l)-1) print(l) 時間複雜度: 最優:O(n) 最差:O(n^2) 時間複雜度:O(nlogn)