在一个有序数列中插入m,并且新数列也是有序的,
主要注意两点:
首先,在给m找插入位置的时候要以“m < a[i]”为条件,如果以“m > a[i]”会比较麻烦,
其次,在将m后面的数后移是,要从大数向小数移,否则会使后面的数全部相等。
以下是代码:
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int n, m, a[100];
while (cin >> n >> m)
{
if (!(n == 0 && m == 0))
{
for (int i = 1; i <= n; i ++)
cin >> a[i];
int flag = 0;
for (int j = 1; j <= n; j ++)
{
if (m < a[j])
{
flag = j;
break;
}
}
if (flag == 0)
{
a[n + 1] = m;
}
else
{
for (int y = n+1 ; y > flag; y --)
{
a[y] = a[y - 1];
}
a[flag] = m;
}
for (int x = 1; x <= n+1; x++)
{
if (x == 1)
printf ("%d", a[x]);
else
{
printf (" ");
printf ("%d", a[x]);
}
}
printf ("\n");
}
else continue;
}
system ("pause");
return 0;
}