快速排序 Python實現

2021-08-20 10:49:07 字數 1239 閱讀 4199

快速排序的思路是依據乙個中值資料項來把資料表分為兩半:小於中值的一半和大於中值的一半,然後每部分分別進行快速排序

基本結束條件:資料表僅有乙個資料項,自然是排好序的。

縮小規模:根據中值,將資料表分為兩半,最好情況是相等規模的兩半

呼叫自身:將兩半分別呼叫自身進行排序

**資料表的目標:找到「中值」應處的位置

**資料表的手段:

①設定左右標,左標向右移動,右標向左移動,

②左標一直向右移動,碰到比中值大的就停止,右標一直向左移動,碰到比中值小的就停止,然後把左右標所指的資料項交換

③繼續前述的移動過程,直到左標移到右標的右側,停止移動,這時右標所指的位置就是中值應處的位置,將中值和這個位置交換,**完成,左半部全比中值小,右半部都比中值大。

#基本結束條件

if first=leftmark and alist[rightmark]>=mid:

rightmark-=1

#兩標相錯就結束移動

if rightmark

done=true

#左右兩標指向的值交換,繼續移動

else:

temp=alist[leftmark]

alist[leftmark]=alist[rightmark]

alist[rightmark]=temp

temp2=alist[first]

alist[first]=alist[rightmark]

alist[rightmark]=temp2

return rightmark

alist=[52,312,54,7,3,2]

quicksort(alist)

print(alist)

python實現快速排序

快速排序的思想是任意選取要排序的list中的乙個數pivot,每次遞迴時將list按照 小於pivot的,pivot,大於pivot的 排序,再對小於和大於pivot部分分別快速排序。function quicksort list select a pivot foreach x in list i...

Python實現快速排序

快速排序的思路 numlist 6,8,1,4,3,9,5,4,11,2,2,15,6 1 設 keys 又稱為監視哨 等於 numlist 0 i等於0 j等於len numlist 1,即如下 numlist 6,8,1,4,3,9,5,4,11,2,2,15,6 keys 6 i 0 j2 1...

python實現快速排序

coding utf 8 實現對列表中的數進行快速排序 importrandom 隨機生成乙個有1000整數的列表 number random.randint 1 1000 foriinrange 1000 列印原始列表 printnumber 單個列表快速排序函式 返回一次排序後的列表和所選取基數...