快速排序的思想是任意選取要排序的list中的乙個數pivot,每次遞迴時將list按照[小於pivot的, pivot, 大於pivot的]排序,再對小於和大於pivot部分分別快速排序。
function quicksort(list)
select a pivot
foreach x in list:
if x < pivot:
less.push(x)
else:
greater.push(x)
concatenate(quicksort(less), pivot, quicksort(greater))
# -*- coding: utf8 -*-
defquicksort
(list, start, end):
if (start >= end): # 這裡用》=而不用==,可以防止pivot在排序之前已是最大或最小的情況出錯
return list
pivot = list[end]
i = start
j = end
while i < j:
while i < j and list[i] <= pivot:
i = i + 1
list[j] = list[i]
while i < j and list[j] >= pivot:
j = j - 1
list[i] = list[j]
list[i] = pivot # 即list[j] = pivot
quicksort(list, start, i-1)
quicksort(list, j+1, end)
return list
l = [1, 3, 5, 2, 4, 10, 9, 7, 6, 8]
quicksort(l, 0, 9)
print(l)
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 單個列表快速排序函式 返回一次排序後的列表和所選取基數...
python 實現快速排序
參考的部落格 from future importprint function a 72,6,57,88,60,42,83,73,48,85 defquick sort a,l,r ifl 取得基數 whileindexi indexj whileindexi indexjanda indexj x...