快速排序(分治法)

2022-05-03 04:06:06 字數 1128 閱讀 5519

問題描述參考:

演算法實現部分:

//

random_quick_sort.cpp

#include "

random_quick_sort.h

"#include

template

void randomquicksort(type a, int p, intr)}

//隨機產生基準數

template

int random_partition(type a, int p, int

r)//

根據基準元素進行排序

template

int partition(type a, int p, int

r) a[p] =a[j];

a[j] =x;

return

j;}

標頭檔案:

//

random_quick_sort.h

#ifndef random_quick_sort_h

#define random_quick_sort_htemplate

void randomquicksort(type a, int p, int

r);#endif

主函式:

//

main.cpp

#include#include

"random_quick_sort.cpp

"using

namespace

std;

#define type int //

定義陣列元素型別

intmain()

randomquicksort(a,

0, size - 1

); cout

<< "

輸出快速排序後的陣列:

"

system(

"pause");

delete

a;

return0;

}

注意:這裡的基準數是隨機產生的,從而期望劃分是較為對稱的;

分治法 快速排序

演算法的思想 將大的問題化為小問題 問題性質不變 快速排序是在比較排序中相對較快,所以稱為快速排序。對於乙個陣列a n 快速排序中分界值需要取n次也就是說,每乙個下標對應的值都需要取一次。源 如下 include using namespace std template int partition ...

快速排序,分治法

平均時間複雜度是 o nlogn 在傳入的陣列為倒序時,將出現最壞的情況,時間複雜度為o n 2 private static void myquicksort int arr,int start,int end int divideindex divide arr,start,end 分治法,按d...

分治法 快速排序

快速分類是一種基於劃分的分類方法 劃分 選取待分類集合a中的某個元素t,按照與t的大小關係重新整理a中元素,使得整理後的序列中所有在t以前出現的元素均小於等於t,而所有出現在t以後的元素均大於等於t。這一元素的整理過程稱為劃分 partitioning 元素t稱為劃分元素。快速分類 通過反覆地對待排...