快速排序的思路是依據乙個中值資料項來把資料表分為兩半:小於中值的一半和大於中值的一半,然後每部分分別進行快速排序
基本結束條件:資料表僅有乙個資料項,自然是排好序的。
縮小規模:根據中值,將資料表分為兩半,最好情況是相等規模的兩半
呼叫自身:將兩半分別呼叫自身進行排序
**資料表的目標:找到「中值」應處的位置
**資料表的手段:
①設定左右標,左標向右移動,右標向左移動,
②左標一直向右移動,碰到比中值大的就停止,右標一直向左移動,碰到比中值小的就停止,然後把左右標所指的資料項交換
③繼續前述的移動過程,直到左標移到右標的右側,停止移動,這時右標所指的位置就是中值應處的位置,將中值和這個位置交換,**完成,左半部全比中值小,右半部都比中值大。
#基本結束條件
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 單個列表快速排序函式 返回一次排序後的列表和所選取基數...