有乙個
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 從開始位置...