Problem Description
给定N(N≤10^5)个整数,要求用快速排序对数据进行升序排列,注意不得使用STL。
Input
连续输入多组数据,每组输入数据第一行给出正整数N(≤10^5),随后给出N个整数,数字间以空格分隔。
Output
输出排序后的结果,数字间以一个空格间隔,行末不得有多余空格。
Example Input
8 49 38 65 97 76 13 27 49
Example Output
13 27 38 49 49 65 76 97
01 | #include<stdio.h> |
02 | void qsort ( int s[], int L, int R) |
03 | { |
04 | int key = s[L], i = L, j = R; |
05 | if (L >= R) return ; |
06 | while (i < j) |
07 | { |
08 | while (i < j && s[j] >= key) j--; |
09 | s[i] = s[j]; |
10 | while (i < j && s[i] <= key) i++; |
11 | s[j] = s[i]; |
12 | } |
13 | s[i] = key; |
14 | qsort (s, L, i - 1); |
15 | qsort (s, i + 1, R); |
16 | } |
17 | int main() |
18 | { |
19 | int n, i, s[100010]; |
20 | while ( scanf ( "%d" , &n) != EOF) |
21 | { |
22 | for (i = 0; i < n; i++) |
23 | { |
24 | scanf ( "%d" , &s[i]); |
25 | } |
26 | qsort (s, 0, n - 1); |
27 | for (i = 0; i < n; i++) |
28 | { |
29 | printf ( "%d%c" , s[i], i==n-1 ? '\n' : ' ' ); |
30 | } |
31 | } |
32 | return 0; |
33 | } |