国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python遞歸實現快速排序

2020-01-04 14:41:32
字體:
來源:轉載
供稿:網友

快速排序(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]>>> 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宝坻区| 武宣县| 镇雄县| 鸡西市| 孝感市| 嘉黎县| 吉水县| 偏关县| 夹江县| 永仁县| 新源县| 双江| 博野县| 泾源县| 神农架林区| 聂拉木县| 嫩江县| 峨眉山市| 连江县| 宜都市| 康乐县| 伊金霍洛旗| 永川市| 镇雄县| 来宾市| 天等县| 长乐市| 大安市| 乌兰察布市| 扬中市| 怀远县| 陈巴尔虎旗| 高碑店市| 盐城市| 乌鲁木齐市| 达尔| 彩票| 应用必备| 斗六市| 巢湖市| 应用必备|