python筆記 之 快速排序

2021-10-09 20:52:05 字數 1114 閱讀 6492

'''

quick_sort(a,p,r)

if p

def

quick_sort

(a,p,r)

:'''

quick_sort用遞迴法實現對陣列進行排序(正序)

a是乙個僅包含數值型的列表

p,r是列表a的下標,且滿足p<=r'''

if pq=partition(a,p,r)

quick_sort(a,p,q-1)

quick_sort(a,q+

1,r)

defpartition

(a,p,r)

:'''

partition為快速排序的關鍵函式,用來對陣列進行原址重拍

partition選擇陣列最後乙個元素作為主元x,並圍繞x把陣列劃分成4個(可能為空)區域

for迴圈體內的下標k在每個區域滿足以下性質:

1,若p<=k<=i,則a[k]<=x

2,若i+1<=k<=j-1,則a[k]>x

3,若k=r,則a[k]>x

'''x=a[r]

i=p-

1for j in

range

(p,r)

:if a[j]

<=x:

i=i+

1 a[i]

,a[j]

=a[j]

,a[i]

a[i+1]

,a[r]

=a[r]

,a[i+1]

return i+

1

a =[9

,8,7

,5,5

,6,13

,2,3

,12]print

(a)quick_sort(a,0,

len(a)-1

)print

(a)[9,

8,7,

5,5,

6,13,

2,3,

12][2

,3,5

,5,6

,7,8

,9,12

,13]

Python排序演算法之快速排序

從列表中抽取乙個元素p 假定為第乙個 使p歸位,保證左邊的元素都比p小,右邊的元素都比p大。再遞迴呼叫完成排序 最壞情況 o n 2n 2 n2 平均情況 o nlogn 最好情況 o nlogn 最壞情況 o n 平均情況 o logn 不穩定 較複雜 一開始,從列表中隨機抽取乙個數與第乙個元素互...

Python排序演算法之快速排序

快排的思想 首先任意選取乙個資料 通常選用陣列的第乙個數 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。一趟快速排序的演算法是 1 設定兩個變數i j,排序開始的時候 i 0,j n 1 2 以第乙個陣列元素作為關鍵資料,賦值給key,即key...

自學筆記之快速排序

快速排序作為應用非常廣泛的演算法,主要有以下兩個優點。1.所需的平均時間複雜度為o nlgn 最差時間複雜度為o n2 其中的係數常數小。2.為原地排序,所需的空間複雜度小。與歸併排序類似,使用了分治法來排序陣列。divide 將陣列a p r 分成兩個子陣列a p.q 1 和子陣列a q 1.r ...