數據結構實驗之排序八:快速排序 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic 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 Hint
Author
接下來是快排的代碼,說實在的,對這個代碼一直不熟練,需要強加聯系
#include <stdio.h>void qsort(int a[], int left, int right){ int x = a[left], i = left, j = right; if (left >= right) { return ; } while (i < j) { while (i < j && a[j] >= x) { j--; } a[i] = a[j]; while (i < j && a[i] <= x) { i++; } a[j] = a[i]; } a[i] = x; qsort(a, left, i - 1); qsort(a, i + 1, right);}int main(){ int n, a[100010], i; while (~scanf ("%d", &n)) { for (i = 0; i < n; i++) { scanf ("%d", &a[i]); } qsort(a, 0, n - 1); for (i = 0; i < n; i++) { printf ("%d%c", a[i], i < n - 1 ? ' ' : '/n'); } } return 0;}新聞熱點
疑難解答