快速排序 筆記 防止題目重複

2021-10-11 17:36:24 字數 705 閱讀 6261

快速排序

氣泡排序

每次迴圈,相鄰兩元素兩兩比較,不符合則交換,最大元素沉底

//隨便寫的,好像不對

void

bmblesort

(sqlist &l)

}}

快速排序(quick sort)

1 快速排序的原理

遞迴邊界:序列長為1或0則不必排序

遞迴關係:

薛烈長度大於1,則選擇某元素作為樞軸(如最左側元素)

根據樞軸元素將原序列乙份為二(劃分)

左右兩側子串行通過重複上述過程,遞迴完成各自的排序

劃分:選最左元素作為樞軸,備份之,令low和high指向兩端

先high向左找小元素移動到右側,再low向右找元素移動到左側,

如此重複至兩者相遇;

填入樞軸,完成劃分

2 快速排序演算法的實現

int

partition

(sqlist l,

int low,

int high)

l.r[low]

= l.r[0]

;return low;

}void

qsort

(sqlist &l,

int low,

int high)

}

3 總結與推廣

快速排序筆記

背景 給直角座標系下的座標 x,y 組合排序,用到此,特記之。最壞時間複雜度 n2 平均時間複雜度 nlg n include include using namespace std 基於分治思想。初始化慢者,比快者慢一步,中樞是最後乙個數 慢者始終指向快者最近鄰的比中樞小的值,傾向於往前一步是大值...

快速排序學習筆記

學習資料出處 白話經典演算法系列之六 快速排序 快速搞定 快速排序採用分治策略,其基本思想 1 從數列中選乙個元素x作為基準數 2 分割槽過程,把不小於x的元素放到x的右邊,小於x的元素放到x的左邊 3 再對左右區間重複進行分割槽操作,直到各區間只有乙個數 morewindows總結的 挖坑填數 分...

快速排序演算法筆記

個人理解 1 在一組資料中尋找基準數 2 在左右兩端開始比較,從右開始往左推遇到比基準數小的便停下定位,再從左開始往右推遇到比基準數大的數也停下定位,然後將這兩個數交換位置。4 最後將基準數放到資料中間,右邊留有比基準數大的數,左邊留有比基準數小的數。5 在以基準數為界,將兩邊再次分為兩組資料。6 ...