题解 | #有序序列插入一个数#
有序序列插入一个数
http://www.nowcoder.com/practice/74486aec6fe14d44b509efabf265ee66
#include<stdio.h>
int main(void)
{
int n,newNum;
int num[50];
scanf("%d",&n);
for(int i=0;i<n;i++)//输入n个数到数组中
{
scanf("%d",&num[i]);
}
scanf("%d",&newNum);
int l=n-1;//定义一个l下标,指向数组的最后一个元素
while(l>=0&&num[l]>newNum)//如果l不越界并且比指向l的数组元素比要插入的数大,则自减,直到比要插入的数组元素小
l--;
l=l+1;//因为此时l指向数组元素比要插入的数小的数,所以将其加1指向要插入的位置
for(int j=n;j>l;j--)//将数组元素逐个往后挪
num[j]=num[j-1];
num[l]=newNum;//将要插入的数插入相应的位置
for(int i=0;i<=n;i++)//因为已经插入了一个数,所以数组扩大了一个元素
printf("%d ",num[i]);
return 0;
}