32.有序序列插入一个整数(刷题)

news2025/1/9 16:38:34

描述

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

输入描述:

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

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

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

输出描述:

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

解法思想: 

  1. 首先在 insertnum 函数中,使用一个循环遍历已排序的整数序列,找到第一个大于新数的位置。通过比较当前元素和新数的大小,如果当前元素大于新数,则跳出循环,得到插入位置 i

  2. 然后使用另一个循环,从序列的最后一个元素开始,将每个元素后移一位,为新数腾出插入位置。

  3. 最后将新数插入到找到的位置 i

  4. 在主函数 main 中,首先读取整数 n,表示待插入的整数序列的长度。然后声明一个整数数组 arr,用于存储输入的整数序列。接着使用循环逐个读取整数序列中的元素。

  5. 读取整数 num,表示要插入的新数。调用 insertnum 函数将新数插入到整数序列中。

  6. 最后使用循环打印整数序列,包括插入后的结果。

#include <stdio.h>

void insertnum(int arr[], int n, int num) {
    int i, j;

 // 寻找插入位置
    for (i = 0; i < n; i++) {
        if (arr[i] > num){
            break;
        }
    }

// 后移元素腾出插入位置
    for (j = n - 1; j >= i; j--) {
        arr[j + 1] = arr[j];
    }

 // 插入新数
    arr[i] = num;
}

int main() {
    int n, num;
    scanf("%d", &n);// 读取已排序序列的元素个数
    int arr[n];

    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);// 读取已排序序列的元素
    }

    scanf("%d", &num);// 读取新输入的数
 // 插入新数并保持升序
    insertnum(arr, n, num);

// 输出插入后的有序序列
    for (int i = 0; i <= n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

如果要将 arr 改为动态数组,可以使用 malloc 函数动态分配内存空间。下面是修改后的代码示例: 

#include <stdio.h>
#include <stdlib.h>

void insertnum(int arr[], int n, int num) {
    int i, j;

    for (i = 0; i < n; i++) {
        if (arr[i] > num) {
            break;
        }
    }

    for (j = n - 1; j >= i; j--) {
        arr[j + 1] = arr[j];
    }

    arr[i] = num;
}

int main() {
    int n, num;
    scanf_s("%d", &n);
    int* arr = (int*)malloc(n * sizeof(int));

    for (int i = 0; i < n; i++) {
        scanf_s("%d", &arr[i]);
    }

    scanf_s("%d", &num);
    insertnum(arr, n, num);

    for (int i = 0; i <= n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年前端面试题汇总-浏览器原理

1. 浏览器安全 1.1. 什么是 XSS 攻击&#xff1f; 1.1. 1. 概念 XSS 攻击指的是跨站脚本攻击&#xff0c;是一种代码注入攻击。攻击者通过在网站注入恶意脚本&#xff0c;使之在用户的浏览器上运行&#xff0c;从而盗取用户的信息如 cookie 等。 XSS 的本质是因为网站没有对…

企业要从哪些方面着手进行数据安全治理?

什么是数据安全治理&#xff1f; 数据安全治理是指组织基于业务发展与合规要求&#xff0c;制定全面且系统的数据安全策略、流程与技术措施&#xff0c;对数据生命周期中的安全风险进行管控与优化的一系列管理活动。它需要从组织层面建立数据安全管理框架&#xff0c;保证敏感数…

2023-6-2-DIS研究

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

Java 列表导出

一、具体实现 import java.net.URLEncoder; import com.alibaba.excel.EasyExcel;List<实体> targets xxx; response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("UTF-8"); String fileName URLEncoder.encode(&…

深入理解设计原则之里氏替换原则(LSP)

系列文章目录 C高性能优化编程系列 深入理解设计原则系列 深入理解设计模式系列 高级C并发线程编程 LSP&#xff1a;里氏替换原则 系列文章目录1、里氏替换原则的定义和解读2、里氏替换原则可以用于哪些设计模式中&#xff1f;3、如何使用里氏替换原则来降低代码耦合度&#…

Julia系列14:调用自定义C/C++库

1. 基础调用&#xff1a;ccall 调用的基本格式为&#xff1a; ccall((:函数名, 库地址), 输出格式, (输入格式列表), 输入数据) 下面是例子&#xff1a; 1.1 基础数据结构 1.2 数组 首先是输入数组&#xff0c;注意需要convert 接着是输出数组&#xff0c;需要使用unsafe…

《操作系统》—— 处理机调度算法

前言&#xff1a; 在之前的文章中&#xff0c;我们已经了解了进程和线程相关的基本概念&#xff0c;今天我们将要了解的是关于处理机调度相关的知识。 目录 &#xff08;一&#xff09;调度的概念 1、调度的基本概念 2、调度的层次 3、三级调度的关系 &#xff08;二&…

遗传算法(Genetic Algorithm)

本文为阅读《遗传算法原理及应用》的笔记和心得 ISBN&#xff1a;7-118-02062-1 遗传算法简介 遗传算法是模拟生物在自然环境中的遗传和进化过程中而形成的一种自适应全局优化概率搜索算法 总的来说&#xff0c;求最优解解或近似最优解的方法主要有三种&#xff1a;枚举法、启…

【PCB专题】Allegro设置禁止铺铜区域但仍可以走线和打过孔

在PCB设计中我们有时候需要做一些净空区,但是净空区内有一些走线和过孔。如果使用Route Keepout画一个框的话,那是不允许走线和打过孔的,会报DRC。 那么如何才能既禁止区域铺铜,又可以走线和打过孔不报DRC呢? Setup->Areas->Shape Keepout Options选择要禁止…

第二十一篇、基于Arduino uno,控制有源蜂鸣器和无源蜂鸣器发出声音——结果导向

0、结果 说明&#xff1a;有源蜂鸣器按照一定的频率报警&#xff0c;无源蜂鸣器则是一直报警&#xff0c;都采用非阻塞方式编写&#xff0c;如果是你想要的&#xff0c;可以接着往下看。 1、外观 说明&#xff1a;有源蜂鸣器和无源蜂鸣器看上去一样&#xff0c;但是背面不一…

详解Handler

详解Handler 文章目录 详解Handler1.Handler的工作流程1.1主线程具有如上性质的原因1.2流程图 2.Handler流程中的重要的几个方法2.1Message中的属性2.2.1what2.2.2replyTo2.2.3obtain 2.2Handler.post()与Handler.sendMessage()2.2.1post的源码2.2.1.1sendMessageDelayed()源码…

centos6离线安装docker

参考 RedHat 6.8 离线安装Docker &#xff08;rpm包安装&#xff09; - 神奇二进制 - 博客园 (cnblogs.com) 可参考&#xff0c;但本次安装未参考 CentOS6 完全离线安装Docker - 简书 (jianshu.com) 走了一遍&#xff0c;大雾 (1条消息) 离线安装Docker_洒家肉山大魔王的博客…

萌啦科技参加ICBE跨境电商博览会完美落幕,期待再相会!

“ 萌啦科技联合DNY123、喜运达物流共同亮相2023 ICBE跨境电商博览会&#xff0c;更全面地服务东南亚电商卖家&#xff0c;把握新兴市场电商发展商机&#xff01;” 跨境电商“万人”博览会 5月15日-5月17日&#xff0c;ICBE国际跨境电商交易博览会在广州琶洲保利世贸博览馆隆重…

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.3密码测评要求与测评方法

总体要求测评方法 1.密码算法核查 测评人员应当首先了解信息系统使用的算法名称、用途、位置、执行算法的设备及其实现方式&#xff08;软件、硬件或固件等&#xff09;。针对信息系统使用的每个密码算法&#xff0c;测评人员应当核查密码算法是否以国家标准或行业标准形式发布…

数据结构与算法-二分查找

1.1 什么是算法&#xff1f; 定义 在数学和计算机科学领域&#xff0c;算法是一系列有限的严谨指令&#xff0c;通常用于解决一类特定问题或执行计算 In mathematics and computer science, an algorithm (/ˈlɡərɪəm/) is a finite sequence of rigorous instructions, …

IO读写的基础原理

read系统调用write系统调用read系统调用&#xff0c;并不是直接从物理设备把数据读取到内存中&#xff0c;write系统调用&#xff0c;也不是直接把数据写入到物理设备。调用操作系统的read&#xff0c;是把数据从内核缓冲区复制到进程缓冲区&#xff1b;而write系统调用&#x…

健康医疗类APP开发 满足民众在线医疗需求

生活水平和社会大环境的变化让人们对于医疗服务的要求也随之提高&#xff0c;传统的到医院就诊已经无法更好的满足现代人多元化的医疗服务需求了。于是很多医院诊所等都考虑通过互联网技术来实现诊疗和科普健康知识的目的&#xff0c;为用户提供更加便捷化多元化的健康诊疗服务…

Python魔法属性和方法

1.魔法属性 __doc__ 获取类或方法的描述信息 class Foo:""" 类对象__doc__的属性值"""def func(self):""" 类方法的__doc__属性值 """passfoo Foo()print("类对象的__doc__&#xff1a;", Foo.__do…

电力需求侧管理是什么及意义

安科瑞虞佳豪 电力需求侧管理是指综合采取合理可行的技术、经济和管理措施&#xff0c;在用电环节实施需求响应、节约用电、电能替代、绿色用电、智能用电、有序用电&#xff0c;推动电力系统安全降碳、提效降耗。 我国分别于2010年和2017年发布了两版电力需求侧管理办法。国…

元”启长三角 共享新未来!长三角数字干线元宇宙创新发展论坛暨第一届长三角元宇宙日在长三角绿洲智谷·赵巷成功举办

5月30日下午&#xff0c;由工信部网络安全产业发展中心&#xff08;工信部信息中心&#xff09;、长三角投资&#xff08;上海&#xff09;有限公司、青浦区经济委员会、青浦区科学技术委员会、青浦区科学技术协会指导&#xff0c;北京大数据协会元宇宙专委会主办&#xff0c;长…