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);
    }
}