题解 | #有序序列插入一个整数#

有序序列插入一个整数

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;
}

全部评论

相关推荐

牛客963010790号:为什么还要收藏
点赞 评论 收藏
分享
10-15 03:05
门头沟学院 Java
CADILLAC_:凯文:我的邮箱是死了吗?
点赞 评论 收藏
分享
今天 22:55
已编辑
叮咚买菜
牛客吹哨人:建议细说...哨哥晚点统一更新到黑名单:不要重蹈覆辙!25届毁意向毁约裁员黑名单https://www.nowcoder.com/discuss/1317104
叮咚买菜稳定性 10人发布 投递叮咚买菜等公司10个岗位 >
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务