【算法竞赛宝典】插入排序

2023-10-28

【算法竞赛宝典】插入排序

题目描述

在这里插入图片描述

伪代码

在这里插入图片描述

代码展示

//插入排序数,请自己根据例程修改 
#include <iostream>

using namespace std;

int main() {
    int a[11] = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};
    int temp1, temp2, number, end, i, j;
    cin >> number;
    if (number > a[9])
        a[10] = number;
    else {
        for (i = 0; i < 10; i++)//从左往右扫描
        {
            if (a[i] > number)//找到比插入数大的数时
            {
                temp1 = a[i];//将该数先暂存到temp1
                a[i] = number;//把插入数插入
                for (j = i + 1; j < 11; j++)//后面的数依次后移
                {
                    temp2 = a[j];//后移时,先将a[j]的值暂存到temp2
                    a[j] = temp1;//插入数
                    temp1 = temp2;//temp2的值存到temp1,继续下一次的插入
                }
                break;
            }
        }
    }
    for (i = 0; i < 11; i++)
        cout << a[i] << ' ';
    return 0;
}           

代码讲解

这段代码实现了插入排序算法,将一个数字插入已排序的数组中并保持数组的有序性。以下是代码的关键思路和步骤:

  1. 首先,定义一个已排序的数组 a,其中包含了初始的已排序元素。

  2. 从标准输入中读取一个新的数字 number,这是要插入到已排序数组中的数字。

  3. 首先,检查 number 是否大于已排序数组中的最大值 a[9]。如果 number 大于最大值,则直接将其放在数组的最后一位 a[10],因为它比已排序数组中的所有元素都大,不需要进行进一步的比较。

  4. 如果 number 不大于最大值,则需要找到适当的位置将其插入已排序数组中。这通过以下方式实现:

    • 使用一个循环遍历已排序数组 a,从左向右扫描。
    • 当找到一个比 number 大的元素 a[i] 时,将 a[i] 暂存到 temp1
    • number 放入 a[i] 的位置,然后开始后面的数依次后移,以为插入 number 腾出位置。
    • 在插入 number 后,循环结束。
  5. 最后,输出排序后的数组 a,包括新插入的元素。

这段代码会确保插入 number 后的数组仍然保持有序,并将结果输出到标准输出。这是插入排序算法的基本思路,它在已排序数据上的插入操作是其关键特点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【算法竞赛宝典】插入排序 的相关文章

  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • 部署 MVC4 项目时出错:找不到文件或程序集

    过去 我只需使用 Visual Studio 2012 发布到 AWS 菜单项即可部署我的 MVC4 网站 到 AWS Elastic Beanstalk 现在 程序可以在本地编译并运行 但无法部署 从消息来看 它似乎正在寻找不在当前部署的
  • boost::multi_index_container 复合键中的 equal_range 与比较运算符

    我正在尝试从多索引容器查询结果 其中值类型是三个元素的结构 第一个值已给出 但第二个和第三个值必须大于或小于查询参数 经过搜索后 我发现必须实现自定义密钥提取器 并且这里的一些链接建议相同 但我无法实现它 boost multi index
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • Func 方法参数的首选命名约定是什么?

    我承认这个问题是主观的 但我对社区的观点感兴趣 我有一个缓存类 它采用类型的缓存加载器函数Func
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 如何在C++中实现模板类协变?

    是否可以以这样一种方式实现类模板 如果模板参数相关 一个对象可以转换为另一个对象 这是一个展示这个想法的例子 当然它不会编译 struct Base struct Derived Base template
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • 为什么禁止在 constexpr 函数中使用 goto?

    C 14 对你能做什么和不能做什么有规则constexpr功能 其中一些 没有asm 没有静态变量 看起来相当合理 但标准也不允许goto in constexpr功能 即使它允许其他控制流机制 这种区别背后的原因是什么 我以为我们已经过去
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • A* 之间的差异 pA = 新 A;和 A* pA = 新 A();

    在 C 中 以下两个动态对象创建之间的确切区别是什么 A pA new A A pA new A 我做了一些测试 但似乎在这两种情况下 都调用了默认构造函数 并且仅调用了它 我正在寻找性能方面的任何差异 Thanks If A是 POD 类
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • 如何把对象里的数组取出来合成一个新数组?

    如何把对象里的数组取出来合成一个新数组 var obj 1 tempId 1589851345842 type 2 typeQt name 王桂 idcard zhengzmm fam 11 work 务农 state 1 LAY TABL
  • HJ29字符串加解密

    同上一节的题 本身没有难度 只要注意细节就好 虽然为中等题 可能考察的是扎实的基础知识吧 include
  • Canvas 绘制图像的三种方法、实现帧动画

    绘制图像的三种方法 绘制图像 ctx drawImage 第一种版本 三参数版本context drawImage img x y 把图形绘制到指定的坐标 必须要在图片下载之后才可以使用 使用onload事件 img nl ad funct
  • ajax的技术核心,ajax技术的核心内容:XMLHttpRequest对象详解

    XMLHttpRequest对象是Ajax技术最核心内容 所有现代浏览器均支持XMLHttpRequest对象 XMLHttpRequest用于在后台与服务器交换数据 这意味着可以再不重新加载整个网页的情况下 对网页的某部分进行更新 下面分
  • elasticsearch-head的安装及使用

    ealsticsearch只是后端提供各种api 那么怎么直观的使用它呢 elasticsearch head将是一款专门针对于elasticsearch的客户端工具 elasticsearch head配置包 下载地址 https git
  • VC9: LINK : warning LNK4068: /MACHINE not specified; defaulting to X86

    当把32位程序改成X64的配置编译后 可能会出现错误 fatal error LNK1112 module machine type x64 conflicts with target machine type X86 通常是因为某些编译单
  • 三方支付与微信,支付宝支付有什么优势

    西米支付网 www 45ri com 首先我们来看一下 财付通 又称微信支付 支付宝支付 三方支付的相同之处与关联 1 三方支付又称非银行清算机构 是除了银行之外能够合理合法进行收付款服务 有中国人民银行授予的 支付业务许可证 业务种类涉及
  • eclipse自动换行wordwrap插件安装,检查和使用方法

    eclipse编辑器内文本要实现自动换行需要安装一个wordwrap插件 安装方法 使用Eclipse 的自动升级功能 菜单栏选 Help install new Software 点击Add按钮 在 Name 中填入 wordwrap U
  • vbs代码炫酷效果_表白女神、恶搞损友骚操作,几行简单的代码就能实现

    小伙伴们大家好啊 今天要给大家分享一个好玩的东东 话不多说 看图 实现这个效果只需要简单的几步 新建一个文本 将代码复制到文本保存 将txt后缀修改为vbs即可 下面是收集的一些代码 直接复制就可以用 可以修改为自己想要显示的文字 1 最简
  • 一文了解OpenAi的发展历史

    OpenAI是一家人工智能研究机构 成立于2015年 总部位于美国加州旧金山 它的目标是促进人工智能的发展 使其成为人类最重要的技术之一 并为全球公众带来积极的社会影响 下面是OpenAI的发展历史 2015年 Elon Musk Sam
  • 【机器学习】干货:计算两个向量之间相似性的方法(含源代码)

    最近在做实验的时候 需要计算两个向量之鉴的相似性 该如何实现呢 文章目录 一 余弦相似性 Cosine Similarity 1 1 理论 1 2 实践 1 2 1 文本处理 1 2 2 图像处理 1 2 3 推荐系统 1 2 4 聚类分析
  • SQL注入之五大注入手法

    文章目录 0 重要的函数 0 Mysql字符串函数 0 重要的数据库 0 重要的表 1 UNION query SQL injection 可联合查询注入 2 Error based SQL injection 报错型注入 数据库报错注入版
  • vue2路由手动创建&二级路由&路由传参&路由守卫&打包上线

    路由手动配置 在 vue cli创建的项目中 路由用法如下 1 安装路由 npm install vue router 3 2 定义路由所需的组件 vue文件 要实现页面about 和home两个路由 我们先定义两个组件 定义页面级组件 创
  • CTR深度学习模型之 DSIN(Deep Session Interest Network) 论文解读

    之前的文章讲解了DIEN模型 CTR深度学习模型之 DIEN Deep Interest Evolution Network 的理解与示例 而这篇文章要讲的是DSIN模型 它与DIEN一样都从用户历史行为中抽取兴趣表示 但不同的是DSIN把
  • 用 Qt Designer 创建可扩展对话框

    前面我们设计的对话框都是不能改变它的样子的 但是有时需要对话框根据要求进行适当的改变 两个最常用的需要改变的对话框是可扩展对话框和多页对话框 这两种类型的可以通过代码编写 也可以用Qt Designer 设计 一个例子如下图所示 图 1 可
  • 记录在安装wsl途中遇到的一些坑

    前情 因为要给公司的电脑搭建编译环境 其中需要wsl环境 结果搭建的过程踩到了很多坑 在此记录一下 小白一个 目前只会简单的搭建一下环境 1 wsl1升级为wsl2 起因 想给自己电脑的wsl1升级为wsl2 在powershell里执行了
  • STM32设置为I2C从机模式(HAL库版本)

    STM32设置为I2C从机模式 HAL库版本 目录 STM32设置为I2C从机模式 HAL库版本 前言 1 硬件连接 2 软件编程 2 1 步骤分解 2 2 测试用例 3 运行测试 3 1 I2C连续写入 3 2 I2C连续读取 3 3 I
  • 后端data的存储

    一 数据的格式 创建一个名为data的文件夹 创建文件userlist json的文件用来存储数据 7w username 7w password 6512bd43d9caa6e02c990b0a82652dca create time 2
  • NJU-ICS-linklab 从零开始复习程序的链接与ELF

    linklab实验记录 实验题目及材料 https github com qmj0923 NJU ICS linklab 实验环境 debian 10 5 0 i386 netinst虚拟机 gcc Debian 8 3 0 6 8 3 0
  • 【算法竞赛宝典】插入排序

    算法竞赛宝典 插入排序 题目描述 伪代码 代码展示 代码讲解 题目描述 伪代码 代码展示 插入排序数 请自己根据例程修改 include