【浅谈插入排序】

2023-05-16

浅谈插入排序

插入排序,是把无序数列中的数一个个插入到有序数列中,直到无序数列没有数为止。

比如有这么一个数列: 2 4 6 1 3 5 14 2 0 10
一共有10个数,我们可以把第一个数当做有序区,剩下的数认为是在无序区; 接下来就是把无序区的数一个个插入到有序区。

怎么插入呢?
我们可以从“4”开始,先判断有序区的第一个数(这里是“2”)是否比“4”大;如果比“4”大,那就把这个数往后移动;
然后在判断这个数(“2”)原本位置的前一个数是否比“4”大(上面的数列有序区只有一个数,所以不用再往前遍历了),如果比4大,那就往后移动;依此类推,当 前一个数比“4”小或等于“4”,那就停止遍历;然后把“4”插入到最后一个往后移动的数原来的位置,这样就完成了一个数的插入。接下来循环此操作直到无序区没有数为止。

代码示例

这里只贴出算法有关代码

void insert_sort(int *array, int len)
{
	//有序区一开始只有一个数,循环len-1次即可插入len-1个数到有序区,然后无序区没有数了,从而完成排序
	for(int i = 1; i < len; i++)	
	{
		int j = i - 1;
		int ret = array[i];		//从下标为1的数开始进行插入操作

		while(j >= 0)
		{
			if(array[j] > ret)
			{
				array[j+1] = array[j];	//有序区被用来比较的这个数往后移动
				j--;	//还得看看前面一个数是否比ret大
			}
			else
			{
				break;
			}
		}
		array[j+1] = ret;	//一轮下来确定了ret要插入的位置,插入即可
	}	
}

调试结果

分别打印出从小到大排序和从大到小排序的结果

zzc@zzc-virtual-machine:~/share$ ./1
排序之前,数组为:39	48	29	16	48	40	37	19	33	33	
排序之后,数组变为:16	19	29	33	33	37	39	40	48	48

zzc@zzc-virtual-machine:~/share$ ./1
排序之前,数组为:19	40	4	40	16	20	5	21	6	17	
排序之后,数组变为:40	40	21	20	19	17	16	6	5	4

附录

sd

总结

以上介绍了插入排序的原理,也进行了代码实现和调试。
好记性不如烂笔头,以后忘记了再回来看看。
知行合一乃终点。

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

【浅谈插入排序】 的相关文章

  • 我的2011-当梦想照进现实

    我的2011年 xff0c 之所以是现在的样子 xff0c 始缘于我三年前的一个决定 离职考研 对于工作了两年的我来说 xff0c 离职考研是人生的一场博弈 我的2011年 xff0c 结束了研究生期间对三维骨骼动画渲染的相关研究 xff0
  • Dockerfile RUN 同时执行多条命令

    Dockerfile RUN 同时执行多条命令 Dokcerfile中的命令每执行一条即产生一个新的镜像 xff0c 当前命令总是在最新的镜像上执行 如下Dockerfile xff1a RUN span class hljs built
  • HC-SR04超声波模块使用记录

    文章目录 HC SR04超声波模块使用记录轮询测量方式一 模块使用中的问题二 应对方法三 注意 分时测量利用输入捕获测量利用输入捕获测量 HC SR04超声波模块使用记录 具体使用方法见HC SR04使用手册 xff0c 本文重点记录该模块
  • 【C语言冒泡排序、选择排序和快速排序】

    文章目录 前言一 冒泡排序二 选择排序三 快速排序四 代码设计与实现代码设计代码实现 调试结果冒泡排序改良 延伸思考总结 前言 本文简单介绍了C语言的冒泡排序 选择排序 快速排序 xff0c 结合本人的理解与使用做一下记录 一 冒泡排序 思
  • 平衡车制作---原理篇

    平衡车制作 原理篇 文章目录 平衡车制作 原理篇前言直立控制直观感受内部机理 速度控制方向控制总结 前言 本篇教程内容主要来自于 直立平衡车模参考设计方案 xff0c 且这里是从概念层面讲述的并没有具体的控制理论方面的内容 有了这些概念方面
  • FreeRTOS使用注意

    FreeRTOS使用注意 xff1a 中断中必须使用带FromISR结尾的API函数只有中断优先级处于FreeRTOS可管理的范围内时 xff0c 才能使用FreeRTOS提供的API函数中断中不要使用FreeRTOS提供的内存申请和释放函
  • 现代控制理论基础总结

    现代控制理论基础总结 xff08 线性部分 xff09 学习现代控制理论也有两个月的时间了 xff0c 里面涉及的基础内容和公式十分之多 xff0c 所以现在对各部分基础知识作一个总结 1 控制系统的状态表达式 在现代控制理论中 xff0c
  • 题库(关于c++的网站都盘了)大盘点(好多没盘到)

    1 keda ac 2 hydro ac 3 luogu com cn 4 cplusplus com 5 leetcode cn 6 https loj ac 7 noi cn 8 ybt ssoier cn 8088 9 learncp
  • 利用MapReduce进行二次排序--附例子

    首先先来明确几个概念 xff1a 1 分区 partition 1 xff09 分区 xff08 partition xff09 xff1a 默认采取散列值进行分区 xff0c 但此方法容易造成 数据倾斜 xff08 大部分数据分到同一个r
  • MapReduce之单表关联Join输出祖父母、孙子---(附例子)

    需求 xff1a 一个文件 xff0c 有子女和对应的父母 xff0c 要求输出 祖父母 孙子 xff0c 文件如下 xff1a 单表关联 结果 xff1a child parent grand child Tom Lucy Alice T
  • 如何把 ubuntu 16.04.7 命令行界面下的系统语言更改为中文?

    如果你的 ubuntu 16 04 7 系统在命令行下的默认语言是英文 xff0c 比如下面这样 xff1a 怎么更改才能让某些输出单词显示成中文呢 xff1f 可以修改 etc default locale 这个文件 xff0c 先看一下
  • 小程序云开发实现订阅消息

    链接 简书博主示例 xff1a https www jianshu com p d90f22dac001 官方文档 xff1a 官方文档1 文档2 云调用 使用方法demo 假如这是一个点餐系统 xff0c 想让顾客下单以后 xff0c 派
  • ue4 常见问题解答

    1 如何让客户端自动连接服务器 span style color 0000aa MyGame span span style color 000066 span span style color 000066 exe span span s
  • Freertos代码之互斥信号量

    信号量用于限制对共享资源的访问和多任务之间的同步 三个信号量API函数都是宏 xff0c 使用现有的队列实现 使用例子 typedef void QueueHandle t typedef QueueHandle t SemaphoreHa
  • C语言冒泡排序和快速排序的思想和实现

    冒泡排序 基本思想 对有n个记录的序列进行冒泡排序 xff0c 首先将第一个数字与第二个数字进行比较 xff0c 若为逆序 xff0c 则将两个数字的顺序交换 然后比较第二个数字与第三个数字 xff0c 若为逆序 xff0c 则将两个数字的
  • CVPR2023最新论文 (含语义分割、扩散模型、多模态、预训练、MAE等方向)

    CVPR2023论文最新速递 xff01 含分割 VIT 点云等多个方向 2023 年 2 月 28 日凌晨 xff0c CVPR 2023 顶会论文接收结果出炉 xff01 CVPR 2023 收录的工作中 34 扩散模型 多模态 预训练
  • 【Hadoop基础教程】6、Hadoop之单表关联查询

    本blog主要通过输入文件中的child字段和parent字段进行单表关联查询 xff0c 推导出哪些用户具有child与grandparent关系 开发环境 硬件环境 xff1a Centos 6 5 服务器4台 xff08 一台为Mas
  • 自己完成一个简单的mapreduce程序

    hdfs上的数据源 search txt 我们这里依然使用讲解hive案例的那个数据源 xff0c 通过把hive执行的结果与我们自己写的mapreduce的结果作比较 xff0c 来验证是否编码正确 xff0c 以及能否正确理解mapre
  • ubuntu安装Beyond Compare 4 并破解

    1 官网下载 http www scootersoftware com download php ubuntu选择Linux下的Debian xff0c 32还是64位根据自己的系统下载 2 安装 sudo dpkg i 安装包 deb 3

随机推荐

  • Android部分监听器使用方法总结(一)之OnCLickListener

    ps 写在之前 1 小弟是以为android初学者 xff0c 在学习过程中遇到过一些新手都会遇到的问题 xff0c 希望能借助CSDN这个平台和各位前辈大牛已经同是菜鸟的同学们交流 这也是小弟第一次写博客 xff0c 名副其实的处女座吧
  • Welcome to Xiao

    Welcome to Xiao Hello Everyone xff01 这是我第一次使用 Markdown编辑器 所展示的欢迎页
  • QT_地图导航

    QT 地图导航 代码已经更新 xff1a http www cnblogs com douzujun p 6272667 html 1 地图显示功能 2 ifndef MAPWIDGET H 3 define MAPWIDGET H 4 5
  • 深度学习目标检测2013-2018单双阶段主流模型概览及详解

    背景 xff1a 深度学习引入目标检测领域以来 xff0c 给目标检测领域带来了很多突破性的进展 xff0c 文章 Deep Learning for Generic Object Detection A Survey 由香港中文大 国防科
  • NMS

    NMS 非极大值抑制 def NMS dects threshold dects x1 y1 x2 y2 score x1 61 dects 0 y1 61 dects 1 x2 61 dects 2 y2 61 dects 3 score
  • 我的2014点点滴

    我的2014点点滴 毕业篇 经历了6 43 3 43 3 43 4 43 2 5 61 18 5年的学校生活 xff0c 终于研究生毕业啦 xff01 2014年4月2日 xff0c 赶一晚上的火车 xff0c 回到了母校 xff0c 去领
  • OpenCV小例程——火焰检测(完整代码)

    火焰检测小程序 前几天 xff0c 偶然看到了An Early Fire Detection Method Based on Image Processing The Author is Thou Ho Chao Ho Chen Ping
  • “认知反映测试”——衡量一个人是“在短暂的思考后迅速解决问题”还是“通过一段长反射弧深思熟虑后再做决定”

    认知反映测试 衡量一个人是 在短暂的思考后迅速解决问题 还是 通过一段长反射弧深思熟虑后再做决定 有三个问题 xff1a 1 一副球拍和球成本1 10美元 球拍比球成本高1 00美元 问球多少美元 xff1f 2 如果五台机器生产五个零件需
  • 【选择排序的稳定版本与非稳定版本】

    选择排序 非稳定版本与稳定版本 排序过程中选择一个比较大 xff08 大到小排序 xff09 的数 xff0c 然后把它放到数组中指定的位置 xff1b 这时候可以直接与数组中指定位置交换数据 xff0c 但是可能会导致同值的数据的顺序发生
  • 机器人路径规划_人工势场法

    机器人路径规划 人工势场法 原理 人工势场法是由Khatib提出的一种虚拟力法 原理是 xff1a 将机器人在环境中的运动视为一种机器人在虚拟的人工受力场的运动 障碍物对机器人产生斥力 xff0c 目标点对机器人产生引力 xff0c 引力和
  • python中调用 imread 报错: ImportError: cannot import name imread

    现象 xff1a from scipy misc import imread imresize 报错 提示错误 ImportError cannot import name imread 但是import scipy的时候 显示正确 解决方
  • 改变python的默认路径为当前的工作路径

    改变python的默认路径为当前的工作路径 通过os模块来进行python中路径的更改 默认路径为 xff1a span class hljs prompt gt gt gt span span class hljs keyword imp
  • 无人驾驶技术——无人车的感官(激光雷达,雷达,摄像机)

    文章目录 激光雷达LIDAR什么是LIDARLIDAR原理LIDAR优点LIDAR缺点Velodyne激光雷达传感器HDL64每秒大约收集多少点 xff1f 雷达 RADARRADAR工作原理RADAR优点RADAR缺点 激光雷达 xff0
  • 机器学习——KNN

    机器学习算法 KNN KNN算法和KD Tree 思维导图
  • MATLAB:执行程序时调用bin文件夹下的.m文件,却显示找不到该文件

    在运行程序时 xff0c 明明要被调用的函数脚本就在当前文件夹bin 下面 xff0c 但是程序出错找不到对应的文件 xff0c 经过查询发现 xff1a 在命令行窗口输入 xff1a rehash toolboxcache 即可
  • 什么是定时器计数器

    定时器 计数器实际就是加1计数器 1 定时器和计数器的区别 xff1a 区别很小 xff0c 本质上都是计数器 xff0c 但定时器只是计数固定周期的脉冲 xff0c 所以根据频率可以计算出准确的时间 定时器模式 xff1a 对内部机器周期
  • 面试中问到动态库和静态库相关知识

    1 动态库相比较于静态库的优缺点 xff1f 动态库优点 xff1a 节省内存和代码重用 xff0c 当应用程序使用动态链接库时 xff0c 多个应用程序可以共享磁盘上的DLL xff08 windows xff09 和so linux 副
  • 【c++语法大全】

    C 43 43 基础入门 xff08 转载自黑马程序员 xff09 1 C 43 43 初识 1 1 第一个C 43 43 程序 编写一个C 43 43 程序总共分为4个步骤 创建项目创建文件编写代码运行程序 1 1 1 创建项目 Visu
  • Ubuntu20.04 USB网卡驱动安装 - MT7601u

    型号 xff1a TL WN725N 1 0 免驱版 芯片 xff1a MT7601u 具体型号可使用 96 lsusb 96 命令查看 确认型号为mt7601u后 执行如下命令 sudo apt install git build ess
  • 【浅谈插入排序】

    浅谈插入排序 插入排序 xff0c 是把无序数列中的数一个个插入到有序数列中 xff0c 直到无序数列没有数为止 比如有这么一个数列 xff1a 2 4 6 1 3 5 14 2 0 10 一共有10个数 xff0c 我们可以把第一个数当做