Pyhont筆記 之 快速排序 隨機化版本

2021-10-09 21:19:16 字數 1195 閱讀 9247

本章使用了「使用python語言實現快速排序演算法」中的函式,具體請參考:

使用python語言實現快速排序演算法

'''

randomized_quicksort(a,p,r)

if p

import random

from quick_sort import

*def

randomized_quicksort

(a,p,r)

:'''

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

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

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

if pq=randomized_partition(a,p,r)

randomized_quicksort(a,p,q-1)

randomized_quicksort(a,q+

1,r)

defrandomized_partition

(a,p,r)

:'''

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

randomized_quicksort隨機選擇陣列元素作為主元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

'''i=random.randint(p,r)

a[i]

,a[r]

=a[r]

,a[i]

return partition(a,p,r)

a =[9

,8,7

,5,5

,6,13

,2,3

,12]print

(a)randomized_quicksort(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]

隨機快速排序

問題畫出來小於區域和等於區域,劃偏 1,2,3,4,5,6,7 7 7 總拿最後乙個劃分,跟資料狀況有關,比較差的蛻變程o n 2 6,5,4,3,2,1 1,1 資料分布比較差 比價好的情況 x t n 2t n 2 o n n nlogn 隨機快速排序 隨機選擇乙個數和最後乙個替換一下 長期期望...

快速排序之隨機化

快速排序的思想就是選擇乙個基準數,讓每個數與它比較,找到它在所有這些數排好序後應該在的位置。而快速排序對大體應經排好序的數執行效率是n 2,所以對基準數隨機化,以下 include include using namespace std 產生m到n的隨機數 int random int m,int ...

快速排序和隨機快速排序

嚴書上的快排是以最左邊元素為樞紐的,如下 include include using namespace std intpartition int a,int left,int right a left p return left void quicksort int a,int left,int ...