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

有序序列插入一个整数

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

全部评论

相关推荐

刷牛客的单身狗很认真:全国可飞,支持007 上班时间,是吧?
点赞 评论 收藏
分享
bg27强双非本,目前在学习golang后端gin框架部分,在b站找了一个轮子项目敲了一下,技术栈是gin&nbsp;+&nbsp;gorm&nbsp;+&nbsp;mysql&nbsp;+&nbsp;redis。我目前的想法是这一个月学习408和go八股以及刷算法然后在12月找个寒假实习然后大三下开始准备考研。我是考研意愿比较强烈,想问一下我是应该all&nbsp;in其中一个方向吗,我感觉我实习对我考研来说也是没什么帮助的好像。
牛客28967172...:毕业工作,考研,考公是完全不同的方向。 99%的人拼尽全力也只能把一个做好(能做好都已经是佼佼者了,比如进进大厂,考985或者考公) 如果你确定要考研可以不用学任何就业技术框架,也不用实习经验,刷题背知识点就行,但注意必须考92院校起步,因为这个年代双非硕毕业后完全不如双非本(互联网行业),可以说双非硕在互联网就业完全是负收益
投递哔哩哔哩等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务