有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。本题要先判断位置,然后将该位置换成插入的数,并记录其位置,再将剩余的数倒着放回数组,即可。详见代码:#include #include #include const int N=1e7; int a[N]; #define endl '\n' using namespace std; int main() {
int n,insert,x;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cin>>insert;
for(int i=0;i<n;i++)
{
if(insert>a[i])
{
a[n]=insert;
}
}
for(int i=0;i<n;i++)
{
if(insert>=a[i]&&insert<=a[i+1])
{
x=i+1;
break;
}
}
for(int i=n-1;i>=x;i--)
{
a[i+1]=a[i];
}
a[x]=insert;
for(int i=0;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}