题目描述:
有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。
解法:
插入数据的时候,可以先输出数组的部分,再输出插入的数据,再输出数组剩下来的部分。
#include<iostream>
using namespace std;
int main()
{ //插入可以不将数组扩大,先输出一半,再输入m,再输出另一半
int n,m;
while(cin>>n>>m)
{
if(n==0&&m==0) continue;
int i;
int a[105];
for(i=0;i<n;i++) //输入数据
cin>>a[i];
int q=0;
for(i=0;i<n;i++) //判断应该插入的位置
{
if(m<a[i])
{
q=i;
break;
}
}
if(q==0) //m为最大值
{
for(i=0;i<n;i++)
cout<<a[i]<<' ';
cout<<m<<endl;
}
else{ //存在比m大的数
for(i=0;i<q;i++)
cout<<a[i]<<' ';
cout<<m<<' ';
if(q==(n-1)) cout<<a[n-1]<<endl; //如果最后一位比m大
else { //中间某一位比m大
for(i=q;i<n-1;i++)
cout<<a[i]<<' ';
cout<<a[n-1]<<endl;
}
}
}
return 0;
}