python實現快速排序

2021-07-16 09:33:29 字數 980 閱讀 3398

快速排序的思想是任意選取要排序的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...