牛客网-编程入门习题训练习题集收集

简介: 牛客网-编程入门习题训练习题集收集

 目录

BC77 有序序列插入一个数


BC77 有序序列插入一个数

描述

有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。

输入描述:

第一行输入一个整数(0≤N≤50)。

第二行输入N个升序排列的整数,输入用空格分隔的N个整数。

第三行输入想要进行插入的一个整数。

输出描述:

输出为一行,N+1个有序排列的整数。

input:

5

1 6 9 22 30

8

output:

1 6 8 9 22 30


#include <stdio.h>
int main()
{
    int arr[51]={0};
    int m=0;
    scanf("%d",&m);
    for(int i=0;i<m;i++)
    scanf("%d",&arr[i]);  //完成数组元素的输入
    int ins=0;
    scanf("%d",&ins);
    for(int j=m-1;j>=0;j--)//从后往前设置,可以起到不断插入的作用
    {
        if(arr[j]>ins)
        {
            arr[j+1]=arr[j];//占用后面的空间,腾出前面的位置插入
            arr[j]=ins;
        }
        else 
        {
        arr[j+1]=ins;
        break;
        }
    }
    for(int t=0;t<m+1;t++)//数组元素的输出
    printf("%d ",arr[t]);
    return 0;
}

image.gif

此题要求的是进行一个有序数组的插入,那么思路大致为:既然是有序数组,那么要找到插入的位置对应的下标是多少,而在插入的时候如果从前往后遍历会导致没有多余的空间供新元素的插入,而如果选择从后向前遍历,可以使得后面的元素向后移位,腾出空间供新元素的插入,利用for循环把元素向前推进。

值得学习的点在于,利用数组后面空间不被占用,可以把元素后置再把新元素插入,反复重复就可以把要插入的新元素插入到想要的位置。



相关文章
|
17天前
|
算法
计算机算法设计与分析(1-6章 复习笔记)
计算机算法设计与分析(1-6章 复习笔记)
|
25天前
大学物理(上)-期末知识点结合习题复习(1)——运动的描述(两类运动学知识点、圆周运动知识点、相对运动知识点)
大学物理(上)-期末知识点结合习题复习(1)——运动的描述(两类运动学知识点、圆周运动知识点、相对运动知识点)
19 0
|
2月前
|
算法 调度
【算法设计与分析】— —基础概念题(one)可作为日常联系或期末复习
【算法设计与分析】— —基础概念题(one)可作为日常联系或期末复习
73 1
|
8月前
|
人工智能 算法 BI
【AcWing算法基础课】第四章 数学知识(未完待续)(2)
从2到n枚举每个数,删掉其所有的倍数,枚举完之后,没有被删掉的数为质数。
57 0
|
8月前
|
存储 人工智能 算法
【AcWing算法基础课】第四章 数学知识(未完待续)(3)
根据下面公式来预处理出等式右边的组合数的值,那么等式左边就可以用等式右边已经算过的值来进行计算(有点像dp)。
65 0
|
12月前
|
SQL 存储 数据库
数据库原理第七章课后题答案(第四版)
数据库原理第七章课后题答案(第四版)
62 0
|
8月前
|
人工智能 算法
【AcWing算法基础课】第四章 数学知识(未完待续)(1)
利用秦九韶算法来实现其他进制转十进制的结果求解
54 0
|
12月前
|
SQL 存储 数据挖掘
数据库原理第六章课后题答案(第四版)
数据库原理第六章课后题答案(第四版)
343 0
|
数据库
数据库系统概论第十章课后习题
数据库系统概论第十章课后习题
|
机器学习/深度学习 存储 人工智能
C语言程序设计第五版谭浩强课后答案 第五章习题答案(3-17题)
C语言程序设计第五版谭浩强课后答案 第五章习题答案(3-17题)