您好,登錄后才能下訂單哦!
快速排序(QuickSort)是對冒泡排序的一種改進:
基本思想:
通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序
過程可以遞歸進行,以此達到整個數據變成有序序列。
一趟快速排序的算法是:
1)設置兩個變量i、j,排序開始的時候:i=0,j=N-1;
2)以第一個數組元素作為關鍵數據,賦值給key,即key=A[0];
3)從j開始向前搜索,即由后開始向前搜索(j--),找到第一個小于key的值A[j],將A[j]和A[i]互換;
4)從i開始向后搜索,即由前開始向后搜索(i++),找到第一個大于key的A[i],將A[i]和A[j]互換;
5)重復第3、4步,直到i=j; (3,4步中,沒找到符合條件的值,即3中A[j]不小于key,4中A[i]不大于key的時候改變j、i的值,使得j=j-1,i=i+1,直至找到為止。找到符合條件的值,
進行交換的時候i, j指針位置不變。另外,i==j這一過程一定正好是i+或j-完成的時候,此時令循環結束)。
利用python實現的快速排序代碼quick_sort.py如下:
def sub_sort(array,low,high): pivotkey=array[low] while low<high : while low<high and array[high]>=pivotkey: high -= 1 array[low]=array[high] while low<high and array[low]<=pivotkey: low += 1 array[high]=array[low] array[low]=pivotkey return low def quick_sort(array,low,high): if low < high : pivoloc=sub_sort(array,low,high) quick_sort(array,low,pivoloc-1) quick_sort(array,pivoloc+1,high) if __name__=="__main__": array=[49,38,65,97,76,13,27] print array quick_sort(array,0,len(array)-1) print array
對一個數組array=[49, 38, 65, 97, 76, 13, 27]進行快速排序,得到的結果如下所示:
=============== RESTART: I:\python_DataStructure\quick_sort.py =============== [49, 38, 65, 97, 76, 13, 27] [13, 27, 38, 49, 65, 76, 97] >>>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。