A40995. 数列排序
填空题
中等
知识点
题目描述
数列排序
题目描述
将一正整数序列{K1,K2,...,K9}重新排列成一个新的序列。新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。
输入格式
输入有多行,第一行为N表示行数,每行9个整数.
输出格式
输出N行,按要求进行排序的结果.
样例输入
2
6 8 9 1 2 5 4 7 3
3 5 8 9 1 2 6 4 7
样例输出
3 4 5 2 1 6 8 9 7
2 1 3 5 8 9 6 4 7
参考答案
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n); //输入n
while (n--) //循环n次
{
int a[9], b[9]; //a, b数组分别记录比第一个元素小与大的数字
int Sa = 0, Sb = 0; //Sa, Sb分别记录a, b数组的有效长度
int k; //k记录输入的第一个数字
scanf("%d", &k); //输入k
for (int i = 0; i < 8; i++) //第一个数字已经输入过了,这里循环8次
{
int temp;
scanf("%d", &temp); //输入临时值
if (temp < k) //比k小放进a数组
a[Sa++] = temp; //此处先赋值然后Sa自加
else //比k大(或相等)放进b数组
b[Sb++] = temp; //此处先赋值然后sb自减
}
for (int i = Sa - 1; i >= 0; i--) //a数组从后往前循环输出
{
printf("%d ", a[i]);
}
printf("%d", k); //输出k
for (int i = 0; i < Sb; i++) //b数组从前往后输出
{
printf(" %d", b[i]);
}
printf("\n");
}
return 0;
}
上一题
下一题