Nearth 分治策略007 快速排序演算法

2021-10-01 07:59:44 字數 726 閱讀 5207

快速排序演算法是基於分治策略的另乙個排序演算法。其基本思想是,對於

輸入的子陣列a[p:r],按以下三個步驟進行排序:

1,分解:以a[p]為基準元素將a[p:r]劃分成3段,分別是a[p:q-1],a[q],a[q+1:r],

使a[p:q-1]中任何乙個元素小於等於a[q],而a[q+1:r]中任何乙個元素大於等於a[q].

下標q在劃分過程中已確定。

2,遞迴求解:通過遞迴呼叫快速排序演算法,分別對a[p:q-1]和a[q+1:r]進行排序

3,合併:由於對a[p:q-1]和a[q+1:r]的排序時就地進行的,因此在a[p:q-1]和

a[q+1:r]都已排好序後,不需要執行任何計算,a[p:r]則已排好序。

*/#includeusing namespace std;

#define max 100

int arr[max]=;

void quicksort(int* arr,int left,int right)

if(i>n;

cout

cout<=1):";

cin>>left;

cout

cout<

Nearth 分治策略006 合併演算法

合併排序演算法是用分治策略實現對n個元素進行排序的演算法 其基本思想是 將待排序的元素分成大小大致相同的 兩個子集合,分別對兩個子集和進行排序,最終將排好序的 子集合合併成所要求的排好序的集合。includeusing namespace std define max 100 int arr max...

Nearth 分治策略001 全排列演算法

全排列問題,即乙個陣列arr 5 一共5個數 如果以1為第乙個元素,對排序所得到的排列序列,即有 也可以把看成是乙個數,那麼就對排序,則所得的全排列為 總的全排列個數為 2 includeusing namespace std define max 10 int arr max int num 0 ...

分治策略 快速排序

快速排序演算法是基於分治策略的另乙個排序演算法。其基本思想是 對輸入的子陣列a p r 按以下三個步驟進行排序。1 分解 divide 以a p 為基準元素將a p r 劃分成3段a p q 1 a q 和a q 1 r 使得a p q 1 中任何乙個元素小於等於a q 而a q 1 r 中任何乙個...