任意選乙個資料作為基準資料,然後將所有比它小的數都放到它的左邊,所有比它大的數都放到它的右邊
這裡以乙個列表作為例子
[45,34,12,56,87,77,47,23]
首先選擇45為基準資料
比45小的有:34,12,23
比45大的有:87,77,47,56
所以第一次排序就是
[34,12,23,45,87,77,47,56]
再將45左邊的看成乙個列表,右邊的看成另乙個列表,即
[34,12,23],[87,77,47,56]
同理找基準值:34,87
快速排序:
[12,23,34],[56,77,47,87]
。。。。。。
[12,23],[34],[45],[56,77,47],[87]
[12],[23],[34],[45],[47],[56],[77],[87]
最終結果就是
[12,23,34,45,47,56,77,87]
def
quick_sort
(alist,start,end)
:if start>=end:
return
mid=alist[start]
low=start
high=end
while low
while low
>mid:
high-=
1 alist[low]
=alist[high]
while low
<=mid:
low+=
1 alist[high]
=alist[low]
alist[low]
=mid
quick_sort(alist,start,low-1)
quick_sort(alist,low+
1,end)
alist=[45
,34,12
,56,87
,77,47
,23]quick_sort(alist,0,
len(alist)-1
)print
(alist)
結果: 快速排序的實現(python)
usr bin env python3 coding utf 8 import random 快速排序基礎 defpartition a,p,r x a r i p 1 j p while j r if a j x i 1 temp a i a i a j a j temp j 1 i 1 temp...
快速排序的python實現
執行過程中,i 之前 含 的元素都比 a r 小,之後的比 a r 大。即 p i 的元素比 a r 小,其後a i 1 a j 1 的元素比a r 大。最後,交換a i 1 與a r def quicksort a,p,r if p r q partition a,p,r quicksort a,...
python 快速排序的實現
快速排序 quicksort 是對氣泡排序的一種改進。快速排序演算法通過多次比較和交換來實現排序,其排序流程如下 def quick sort origin items,comp lambda x,y x y items origin items quick sort items,0,len ite...