题解 | #有序序列插入一个整数#
有序序列插入一个整数
https://www.nowcoder.com/practice/444e87f938464906a1649cff236b102b
#include <stdio.h>
int main()
{
int n=0,x,i;
scanf("%d\n",&n);
int arr[51]={0};
for(i=0;i<n;i++)
{
scanf("%d ",&arr[i]);
}
scanf("%d\n",&x);//x是要插入的数字
for(i=n;i>0;i--)//反着遍历数组,从后向前一次比较
{
//现在这个数组的最后一位是arr[i-1]
if(arr[i-1]>=x)//x比这个数组中最后一个元素还小的话,那么就换写一个数与x比较
{
arr[i]=arr[i-1];//我们将原先的最后一位的数字往后挪一位,因为这个x比这个数小,我们要插进来
}
else//arr[i-1]<x最后一个数小于x的话,那么直接将x赋值到最后位的再后一位
{
arr[i]=x;//那么x就是最大的数,直接放在后面,因为我们设置的数组大小够大,所以我们直接这么写,将arr[i]赋值为x
break;//插入完我们直接break跳出去
}
}
if(i==0)
{
arr[i]=x;//易错点:for循环中不包括i=0的情况,要单独处理
}
//打印改变后的数组
for(i=0;i<=n;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
顺丰集团工作强度 322人发布