As Easy As A+B
小Q有很多书籍,有一天他想整理一下,把这些书按书的大小从小到大摆起来,请你帮帮他好么
Input
输入包含多组测试。第一行输入一个整数T代表测试的个数,接下来的T行每一行包含一个整数N(1<=N<=1000),代表书本的本数,接下来N个数代表这N本书的大小
Output
对每个测试,输出排好序的结果
Sample Input
2
3 2 1 3
9 1 4 7 2 5 8 3 6 9
Sample Output
1 2 3
1 2 3 4 5 6 7 8 9
Hint
输出时每一个测试的最后一个数后面没有空格
#include <stdio.h> #include <stdlib.h> #include <string.h> void paixu(int a[], int l, int r); int main() { int t, i, x; int a[1010]; while(scanf("%d", &t) != EOF) { while(t--) { memset(a,0,sizeof(a)); scanf("%d", &x); for(i = 0; i < x; i++) { scanf("%d", &a[i]); } paixu(a,0,x-1); for(i = 0; i < x; i++) { if(i == x - 1) { printf("%d\n", a[i]); } else { printf("%d ", a[i]); } } } } return 0; } void paixu(int a[], int l, int r) { int i = l, j = r; int x = a[i]; if(i >= j) { return; } else { 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; paixu(a,l,i-1); paixu(a,i+1,r); } }