遞迴與分治 快速排序

2021-07-24 11:52:00 字數 631 閱讀 9377

描述

給定乙個數列,用快速排序演算法把它排成公升序。

輸入 第一行是乙個整數n(n不大於10000),表示要排序的數的個數;下面一行是用空格隔開的n個整數。

輸出 輸出排序後的數列,每個數字佔一行。

輸入樣例 5

3 2 1 4 5

輸出樣例 1

2345

基本思想:讓數列中的乙個數成為劃分基準,比這個基準小的,都在它的左半邊;比這個基準大的,都在它的右半邊。然後對左半邊進行此過程,再對右半邊進行此過程,不斷重複上述過程,直到不滿足遞迴條件。一般都取數列第乙個數作為劃分基準。**如下,已經經過測試。

#include using namespace std;

int a[10001];

int n;

void quicksort(int low, int high);

int main()

quicksort(0, n - 1);

for(int i = 0; i < n; i++)

}void quicksort(int low, int high)

a[i] = key;

if(low < high)

}

分治與遞迴 快速排序

快速排序的基本思想可以這樣來理解 對一組待排序元素,選定其中乙個元素x為基準,將小於x的元素移動到其左邊,將大於x的元素移動到其右邊,然後對於x左邊與右邊的序列進行上述的操作直至排序完成。該演算法時間複雜度最壞的情況出現在待排序列為正序或者逆序時。此時的時間複雜度為o n2 平均時間複雜度為o nl...

分治與遞迴之快速排序

第一種思路 演算法描述 快速排序首先選擇陣列第乙個元素為基準元素,從游標1從第2個元素開始,游標2從最後乙個元素開始掃瞄,但游標1找到比基準元素大,停止掃瞄,游標2開始掃瞄,找到比基準元素小的元素,停止掃瞄,交換兩個元素,以此類推,但游標1的下標大於或等於游標2,則基準元素與當前游標2為下標的元素交...

ACM 歸併排序與快速排序(遞迴與分治)

歸併排序的內容可在紫書p226裡面檢視,紫書裡的 寫得十分簡潔,高效,重點要理解好循壞條件的控制。快排可參考以下的部落格 歸併排序時間複雜度 o nlogn 快排時間複雜度 平均o nlogn 最慢o n 2 歸併排序穩定但佔空間比較大,快排佔空間較小但不穩定。以下為 實現 includeusing...