給定乙個數列,用快速排序演算法把它排成公升序。
第一行是乙個整數n(n不大於10000),表示要排序的數的個數;下面一行是用空格隔開的n個整數。
輸出排序後的數列,每個數字佔一行。
53 2 1 4 5
12345
#include
using namespace std;
void
quicksort
(int left,
int right)
;int a[
10000];
intmain()
void
quicksort
(int left,
int right)
a[i]
= x;
quicksort
(left, i -1)
;quicksort
(i +
1, right);}
}
快排在排列亂序時效率高,但在順序時退化成普通排序效率。
在待排序的元素任取乙個元素作為基準(通常選第乙個元素,但最的選擇方法是從待排序元素中隨機選取乙個作為基準),稱為基準元素;
將待排序的元素進行分割槽,比基準元素大的元素放在它的右邊,比其小的放在它的左邊;
對左右兩個分割槽重複以上步驟直到所有元素都是有序的
快速排序聯想成東拆西補或西拆東補,一邊拆一邊補,直到所有元素達到有序狀態。
以下是**:
演算法練習 NOJ 1003 快速排序
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述給定乙個數列,用快速排序演算法把它排成公升序。輸入第一行是乙個整數n,表示要排序的數的個數 下面一行是用空格隔開的n個整數。輸出輸出排序後的數列,每個數字佔一行。輸入樣例 5 3 2 1 4 5 輸出樣例 1 2 3 4 5 快...
1003 快速排序
問題描述 給定乙個數列,用歸併排序演算法把它排成公升序 輸入格式 第一行是乙個整數n n不大於10000 表示要排序的數的個數 下面一行是用空格隔開的n個整數。輸出格式 輸出排序後的數列,每個數字佔一行。樣例輸入 53 2 1 4 5 樣例輸出12 345思路 寫出快排的核心 以中間值為關鍵字,兩層...
快速排序 C語言 NOJ1064
快速排序是遞迴的,需要有乙個棧存放每層遞迴呼叫時的指標和引數 新的 low 和 high 可以證明,函式quicksort的平均計算時間也是o nlog2n 實驗結果表明 就平均計算時間而言,快速排序是我們所討論的所有內排序方法中最好的乙個。最大遞迴呼叫層次數與遞迴樹的深度一致,理想情況為 log ...