快速排序 python

2021-10-24 21:36:21 字數 1250 閱讀 1876

有乙個

a = [ 2,4,3,1,2 ]

第乙個數為2

剩下的小於或者等於2

[1,2]

放在左邊

大於的

[4,3]

放在右邊

就是

[1,2] + [2] + [4,3]

再把左邊的和右邊的都再排一次

[1,2]

1,左邊:沒有

右邊:2

[1,2]

[4,3]

4左邊:3

右邊:沒有

[3,4]

再加起來

[1,2,2,3,4]

就像這樣一直重複,再注意一下停止迴圈條件,就能完成排序

在平均情況下,快速排序的執行時間為o(n log n)。

def

func

(arr):if

len(arr)

<2:

return arr

else

: pivot = arr[0]

left =

[i for i in arr[1:

]if i<=pivot ]

right =

[i for i in arr[1:

]if i>pivot ]

return func(left)

+[pivot]

+ func(right)

結果:

from random import randint

a = [ randint(-40,60) for n in range(15) ]

print(a)

print(func(a))

[-25, 12, 8, 59, -26, 28, 15, -38, -21, -2, 11, 22, 22, 16, 59]

[-38, -26, -25, -21, -2, 8, 11, 12, 15, 16, 22, 22, 28, 59, 59]

python快速排序排序 python快速排序

import random def rand n for i in range n yield random.randint 0,1000 建立乙個隨機數列表 def createlist n lists for i in rand n return lists 挖坑法快速排序 def quick ...

排序 快速排序 Python

快速排序 快排 是非常常用的排序方法,在技術面試中出現頻率也特別高。它主要採用交換和分治的策略進行排序。是不穩定排序。步驟 1 在序列中選乙個元素作為劃分的基準元素 pivot 2 將所有不大於pivot的數字放在pivot的前面,大於pivot的數字放在pivot的後面 3 以pivot為界,對前...

python快速排序

coding utf 8 class quicksort def sort self,list,left,right 開始位置小於 位置 if left 取到中間的乙個下標值 s list left right 2 i 0 i left j 下標結束 j right while true 從開始位置...