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

首頁 > 編程 > Python > 正文

python遞歸實現(xiàn)快速排序

2020-02-15 22:47:15
字體:
供稿:網(wǎng)友

快速排序(QuickSort)是對冒泡排序的一種改進:

基本思想:

通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分數(shù)據(jù)分別進行快速排序,整個排序

過程可以遞歸進行,以此達到整個數(shù)據(jù)變成有序序列。

一趟快速排序的算法是:

1)設(shè)置兩個變量i、j,排序開始的時候:i=0,j=N-1;

2)以第一個數(shù)組元素作為關(guān)鍵數(shù)據(jù),賦值給key,即key=A[0];

3)從j開始向前搜索,即由后開始向前搜索(j--),找到第一個小于key的值A(chǔ)[j],將A[j]和A[i]互換;

4)從i開始向后搜索,即由前開始向后搜索(i++),找到第一個大于key的A[i],將A[i]和A[j]互換;

5)重復(fù)第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-完成的時候,此時令循環(huán)結(jié)束)。

利用python實現(xiàn)的快速排序代碼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

對一個數(shù)組array=[49, 38, 65, 97, 76, 13, 27]進行快速排序,得到的結(jié)果如下所示:

=============== RESTART: I:/python_DataStructure/quick_sort.py ===============[49, 38, 65, 97, 76, 13, 27][13, 27, 38, 49, 65, 76, 97]>>> 

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东源县| 萍乡市| 丹江口市| 普陀区| 普洱| 舒城县| 福海县| 城步| 浦城县| 佛坪县| 会理县| 五莲县| 封开县| 武威市| 赤峰市| 平原县| 射洪县| 建水县| 清水县| 泰安市| 东明县| 凌海市| 汽车| 嘉黎县| 安吉县| 青岛市| 手游| 崇左市| 方正县| 波密县| 高台县| 东乡| 新津县| 水富县| 准格尔旗| 常宁市| 新安县| 杭锦旗| 静宁县| 桦甸市| 旬阳县|