题目
题目简述
输入有多个测试用例,对于每个测试用例,第一行输入两个整数n、m;n表示被插入数列的元素的个数,m表示需要插入的数;第二行输入一个从小到大排序的n个元素的数列。将m插入该数列使之仍然由小到大排序,然后输出。
思路
定义一个数组,将第二行输入的数据储存到该数组中,通过循环逐个判断该元素是否大于m,如果大于,则将从该元素开始的所有元素后移一位,然后将m储存到该元素原来的位置,最后在一行内输出数组即可。
代码实现
#include<iostream>
using namespace std;
int main()
{
int n, m;
while (cin >> n >> m && (n&&m))
{
int num[102];
for (int i = 0; i < n; i++)
{
cin >> num[i];
}
for (int i = 0; i < n; i++)
{
if (m < num[i])
{
for (int j = n + 1; j > i; j--)
{
num[j] = num[j - 1];
}
num[i] = m;
break;
}
}
for (int i = 0; i < n; i++)
cout << num[i] << " ";
cout << num[n] << endl;
}
return 0;
}