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

有序序列插入一个整数

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

全部评论

相关推荐

喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务