問題描述
給定乙個數列,用歸併排序演算法把它排成公升序
輸入格式
第一行是乙個整數n(n不大於10000),表示要排序的數的個數;
下面一行是用空格隔開的n個整數。
輸出格式
輸出排序後的數列,每個數字佔一行。
樣例輸入
53 2 1 4 5
樣例輸出12
345思路:
寫出快排的核心**,以中間值為關鍵字,兩層迴圈巢狀,從左到右找大值,從右到左找小值,找到後二者直接交換,不斷迴圈
具體**:
# include
# define n 1000
//快排的核心**
void
quick_sort
(int
*a,int n)
quick_sort
( a, i)
;quick_sort
( a + i, n - i);}
intmain()
printf
("排序結果為:\n");
quick_sort
(b,a)
;for
(i =
0; i < a; i++
)printf
("%d "
, b[i]);
return0;
}
NOJ 1003 快速排序
給定乙個數列,用快速排序演算法把它排成公升序。第一行是乙個整數n n不大於10000 表示要排序的數的個數 下面一行是用空格隔開的n個整數。輸出排序後的數列,每個數字佔一行。5 3 2 1 4 5 123 45 include using namespace std void quicksort i...
演算法練習 NOJ 1003 快速排序
時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述給定乙個數列,用快速排序演算法把它排成公升序。輸入第一行是乙個整數n,表示要排序的數的個數 下面一行是用空格隔開的n個整數。輸出輸出排序後的數列,每個數字佔一行。輸入樣例 5 3 2 1 4 5 輸出樣例 1 2 3 4 5 快...
遞迴 快速排序 快速排序
問題描述 用遞迴來實現快速排序 quick sort 演算法。快速排序演算法的基本思路是 假設要對乙個陣列a進行排序,且a 0 x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左 右兩段區域,遞迴地呼叫快速排序演算法來進...