NOJ 1003 快速排序

2021-08-29 01:25:30 字數 1012 閱讀 6150

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

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

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

5

3 2 1 4 5

123

45

#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 ...