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

有序序列插入一个整数

https://www.nowcoder.com/practice/444e87f938464906a1649cff236b102b

#include <stdio.h>
int main(void)
{
    int N = 0;  //原数组元素个数
    scanf("%d", &N);

    //有序序列数组
    int arr[N+1];   //足够长的数组
    int i = 0;
    for(i = 0; i < N; i++)
    {
        scanf("%d", &arr[i]);
    }
    //新整数插入
    int new_z = 0;  
    scanf("%d", &new_z);    //插入整数
    int j = 0;
    
    if(arr[N - 1] < new_z)  //插入数字最大时
    {
        arr[N] = new_z;
    }
    else    //插入数字最小或者在中间时
    {
        for(j = 0; j < N + 1; j++)
        {
            if(new_z <= arr[j])
            {
                int k = 0;  //可以插入时,用于从数组末尾往前递推,比如arr[5] = arr[4],然后arr[4] = arr[3]
                for(k = 0; N - k - 1 >= j; k++) //后一个下标已经到插入的下标时停止
                {
                    arr[N - k] = arr[N - k - 1];    
                }
                arr[j] = new_z; //插入
                break;
            }
        }
    }
    //打印
    for(i = 0; i < N + 1; i++)
    {
        printf("%d ", arr[i]);
    }

    return 0;
}

全部评论

相关推荐

那一天的Java_Java起来:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
VirtualBool:都去逗他了?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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