C语言编译中的简单排列问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 07:20:25
输入

输入数据有多组,第一行是测试数据的组数T,接下的T行中,每行表示一组测试数据,每组测试数据的第一个数字为N(1<=N<=1000),接下来是N个整数。本题中,所有的整数都在32位之内。

输出

输出每组测试数据排序后的结果。每组测试数据占一行。

样例输入

2
3 2 1 3
4 1 3 4 2

样例输出

1 2 3
1 2 3 4

#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>

int compare(const void *arg1, const void *arg2)
{
return (*(const int *)arg1 > *(const int *)arg2);
}

int main()
{
int i, j, T, N, loop, **data;

scanf("%d", &T);
data = (int **)malloc(sizeof(int *) * T);
loop = 0;

while (loop < T)
{
do
scanf("%d", &N);
while (N < 1 || N > 1000);

data[loop] = (int *)malloc(sizeof(int) * (N+1));
data[loop][0] = N;

for (i = 1; i <= N; ++i)
scanf("%d", &data[loop][i]);

++loop;
if (loop == T) break;
}

for (i = 0; i < T; ++i)
{
qsort(&data[i][1], data[i][0], sizeof(int), compare);

for (j = 1; j < data[i][0]; ++j)
printf("%d ", data[i][j]);

printf("%d\n", dat