快速排序演算法回顧 --冒泡排序Bubble Sort和快速排序Quick Sort(Python實現)

來源:互聯網
上載者:User

標籤:on()   tar   參考   lis   ret   冒泡   imp   font   class   

冒泡排序的過程是首先將第一個記錄的關鍵字和第二個記錄的關鍵字進行比較,若為逆序,則將兩個記錄交換,然後比較第二個記錄和第三個記錄的關鍵字。以此類推,直至第n-1個記錄和第n個記錄的關鍵字進行過比較為止。上述過程稱為第一趟冒泡排序,接著第二趟對前面n-1個關鍵字進行同樣操作,……

 

 

 

 

 

 

 

 

快速排序是對冒泡排序的一種改進,通過一趟排序將記錄分割成獨立的兩部分,其中一部分記錄的關鍵字均比另一部分關鍵字小,可分別對這兩部分記錄以遞迴的方法繼續進行排序,以達到整個序列有序。

單趟Partition()函數過程請看下面動圖:

 

 

 

用Python進行實現:

 

#coding=utf-8import timea=[49,38,65,97,76,13,27,49]b=[-1,49,38,65,97,76,13,27,49]      #其中b[0]=-1這一位置是暫存單元,用於存放下面演算法中的list[low]#冒泡排序-------------------------------------------------------def BubbleSort(list):    for i in reversed(range(len(a))):        for j in range(0,len(a)-1):            if(list[j] > list[j+1]):                temp=list[j]                list[j]=list[j+1]                list[j+1]=temp            j+=1        i-=1#快速排序-------------------------------------------------------def Partition(list,low,high):    pivotkey=list[low]              #樞軸    list[0]=list[low]               while low<high:                 #從表的兩端交替地向中間掃描        while(low<high and list[high]>=pivotkey):            high-=1        list[low]=list[high]        #將比樞軸記錄小的移到低端        while(low<high and list[low]<=pivotkey):            low+=1        list[high]=list[low]        #將比樞軸記錄大的移到高端    list[low]=list[0]               #樞軸記錄到位    return low                      #返回樞軸位置def Qsort(list,low,high):       if low<high:        pivotloc=Partition(list,low,high);      #將list一分為二        Qsort(list,low,pivotloc-1)              #對低子表遞迴排序        Qsort(list,pivotloc+1,high)             #對高子表遞迴排序def QuickSort(list):    Qsort(list,1,len(list)-1)#---------------------------------------------------------------start_time=time.time()BubbleSort(a)QuickSort(b)use_time=time.time()-start_timeprint ‘Time used: ‘+str(use_time)print aprint b[1:]

 

參考書目:《資料結構:C語言版》,  嚴蔚敏,吳偉民編著,  清華大學出版社

 

快速排序演算法回顧 --冒泡排序Bubble Sort和快速排序Quick Sort(Python實現)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.