分治法例項(快排)

2021-09-24 23:23:25 字數 815 閱讀 8962

分治法的精髓

分–將問題分解為規模更小的子問題;

治–將這些規模更小的子問題逐個擊破;

合–將已解決的子問題合併,最終得出「母」問題的解;

快速排序原理:從一組數中選出乙個pivot(中心軸),將大於它的數放右邊,小於它的數放左邊,然後再從左邊和右邊的倆組數中分別執行此操作,此時,陣列就是有序的了。

//

// created by a1073 on 2019/7/4.

//#include

void

quicksort

(int

,int

,int);

intmain

(void);

quicksort

(array,0,

5);for

(int i =

0; i <6;

++i)

return0;

}void

quicksort

(int array,

int left,

int right)

while

(array[j]

> pivot)

if(i <= j)}/*

* 此刻i在j的右邊

* 必須進行判斷才能進行遞迴

* 否則在到最後無法停止遞迴

* */

if(j > left)

if(i < right)

}

千萬注意最後的結束條件!!!

分治 快排 快選

快排模板 include using namespace std const int n 1e5 10 int n,a n void quick sort int q,int l,int r quick sort q,l,j quick sort q,j 1,r intmain 快速選擇演算法 選擇...

分治法 快排劃分法(單向掃瞄法)

一 分治法 將乙個規模較大的問題轉化為多個相同形式小規模的子問題,子問題規模較小時,可自然求解。子問題的解可通過合併得到原問題的解。舉例 小明讓小張和小李去借2000元,小張借1000,小李借1000,他們各自向朋友去借,這就是乙個分治問題 思路 用兩個指標將陣列劃分為三個區間。掃瞄指標左邊是確認小...

分治排序之快排

歸併排序和快排 分而治之排序的方法包括歸併排序和快排,歸併排序partition簡單,merge比較複雜,易分難合併 快排的特點則是 難分易合併 快排首先要先確定中心點pivot的選取規則,pivot把陣列分為兩部分,左邊的數都小於pivot,右邊的數都大於等於pivot,然後左右兩部分繼續快排,直...