C++数据结构X篇_21_插入排序(稳定的排序)
文章目录
- 1. 插入排序原理
- 2. 算法图解
- 3. 核心代码:
- 4. 插入排序整体代码实现
1. 插入排序原理
插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
- 原理是将无序序列插入到有序序列中
- 直接插入排序的两种性质:
-
当待排序的原序列中大多数元素都已有序的情况下,此时进行的元素比较和移动的次数较少;
-
当原序列的长度很小时,即便它的所有元素都是无序的,此时进行的元素比较和移动的次数还是很少。
后篇介绍的希尔排序就是基于上面2个性质的改进
2. 算法图解
将待排序的集合看做两部分,已排序的区间(0…i) ; 待排序的区间[i…n);每次选择无序区间的第一个元素插入到有序区间的合适位置,直到整个数组有序。
因为不知道数组中得前几个元素是已经有序的,所以直接从第二个元素开始执行插入排序,将每个元素都进行一次插入排序。
算法图解如下:

3. 核心代码:
void insert_sort(int arr[], int length) //升序
{int j;//第一个元素当做有序的,第二个看做无序,从第二个插入第一个元素并进行比较for (int i = 1; i < length; i++){if (arr[i] < arr[i - 1]) //比升序序列最大值要小,进入插入排序{int temp = arr[i];//从右向左for (j = i - 1; j >= 0; j--){if (temp < arr[j]) //升序序列中元素大于arr[i]{arr[j + 1] = arr[j]; //向前移动一位}else{break;}}arr[j + 1] = temp;}}
}
4. 插入排序整体代码实现
#include <iostream>
using namespace std;void swap(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}//打印数组
void printArr(int arr[])
{for (int i = 0; i < 10; i++){cout << arr[i] << endl;}
}//插入排序
void insert_sort(int arr[], int length) //升序
{int j;for (int i = 1; i < length; i++){if (arr[i] < arr[i - 1]) //比升序序列最大值要小{int temp = arr[i];for (j = i - 1; j >= 0; j--){if (temp < arr[j]) //升序序列中元素大于arr[i]{arr[j + 1] = arr[j]; //向前移动一位}else{break;}}arr[j + 1] = temp;}}printArr(arr);
}int main()
{int arr[] = { 8,2,3,9,6,4,7,1,5,10 };insert_sort(arr, 10);system("pause");return 0;
}
运行结果:

- 插入排序,插入排序代码实现,插入排序代码思路梳理
- 优秀博文:十大经典排序算法-插入排序算法详解,常见的几种排序(C++)
相关文章:
C++数据结构X篇_21_插入排序(稳定的排序)
文章目录 1. 插入排序原理2. 算法图解3. 核心代码:4. 插入排序整体代码实现 1. 插入排序原理 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相…...
【Unity】3D跑酷游戏
展示 finish_all * 方块跑酷 1.教程链接 翻墙:https://www.youtube.com/watch?v9ZEu_I-ido4&listPLPV2KyIb3jR53Jce9hP7G5xC4O9AgnOuL&index3 2.基础制作 最终成果 2.1 基本场景 1.创建Cube作为跑道 1)记得把位置Reset; 2&#…...
bp前端验证码绕过及token绕过
前端验证码绕过及token绕过 原文参考:xiu 文章目录 前端验证码绕过及token绕过原文参考:[xiu](http://www.xiusafe.com/2023/10/25/%E9%AA%8C%E8%AF%81%E7%A0%81%E7%BB%95%E8%BF%87/)1 验证码爆破1. 登录Pikachu,先获取登录的api接口2 验证码…...
Jmeter(十四):跨线程组传递jmeter变量及cookie的处理详解
setUp线程组 setUp thread group 一种特殊类型的线程组,用于在执行常规线程组之前执行一些必要的操作。 在 setup线程组下提到的线程行为与普通线程组完全相同。不同的是执行顺序--- 它会在普通线程组执行之前被触发; 应用场景举例: A、测…...
css实现圆形进度条
能用现成组件就用,实现不行再自己写,因为牵扯到上传文件,进度实时出不来,所以只能使用dom元素操作; 1.实现 效果: 上图是100%,如果需要根据百分比显示,我们需要看下代码里面left和…...
适用于 Windows 10 和 Windows 11 设备的笔记本电脑管理软件
便携式计算机管理软件使 IT 管理员能够简化企业中使用的便携式计算机的部署和管理,当今大多数员工使用Windows 笔记本电脑作为他们的主要工作机器,他们确实已成为几乎每个组织不可或缺的一部分。由于与台式机相比,笔记本电脑足够便携…...
YOLOv5论文作图教程(1)— 软件介绍及下载安装(包括软件包+下载安装详细步骤)
前言:Hello大家好,我是小哥谈。在学习YOLOv5算法的过程中,很多同学都有发表论文的需求。作为文章内容的支撑,图表是最直接的整合数据的工具,能够更清晰地反映出研究对象的结果、流程或趋势。在发表论文的时候,审稿人除了关注论文的内容和排版外,也会审核图表是否清晰美观…...
AutoCAD 2024 Mac中文附激活补丁 兼容M1.M2电脑
AutoCAD 2024是一款功能强大的CAD设计绘图工具,旨在帮助用户创建和编辑高质量的设计图纸和模型。该软件支持2D和3D设计,具有丰富的功能和工具,可用于绘图、建模、注释、标注、尺寸设置等多种操作。AutoCAD 2024还引入了智能对象捕捉、实时预览…...
Jmeter基础---while控制器举例说明
一、 While 控制器 首先创建一个While Controller (While 循环控制器) 设置界面如下: Condition (function or variable) :条件说明 条件为 Flase 的时候,才会跳出 While 循环,否则一直执行 While 控制器下的样例 1、不填…...
正点原子嵌入式linux驱动开发——RGB转HDMI
目前大多数的显示器都提供了HDMI接口,HDMI的应用范围也越来越广,但是STM32MP157这颗芯片原生并不支持HDMI显示。可以通过RGB转HDMI芯片将RGB信号转为HDMI信号,这样就可以连接HDMI显示器了。本章就来学习一下如何在正点原子的STM32MP1开发板上…...
前端时间分片渲染
在经典的面试题中:”如果后端返回了十万条数据要你插入到页面中,你会怎么处理?” 除了像 useVirtualList 这样的虚拟列表来处理外,我们还可以通过 时间分片 来处理 通过 setTimeout 直接上一个例子: <!--* Autho…...
亿图导出word和PDF中清晰度保留方法
步骤一 在亿图软件中画一个元件大小搭配合理的图。注意字体大小的安排,尤其是角标的大小要合适,示范如下 选中所有元器件,右键使用组合功能将电路图组合为一个整体 步骤二: 将亿图软件中的图保存为SVG格式。示范如下 在导出到…...
chatGPT结构及商业级相似模型应用调研
GPT前言 说明 ChatGPT这项技术的历史可以追溯到2018年,当时由Facebook实验室的团队开发出该技术,以开发聊天机器人为目的。随后,ChatGPT在2019年由来自谷歌的DeepMind团队在国际会议ICLR上发表了论文,其中提出了ChatGPT的技术框架…...
HarmonyOS鸿蒙原生应用开发设计- 华为分享图标
HarmonyOS设计文档中,为大家提供了独特的华为分享图标,开发者可以根据需要直接引用。 开发者直接使用官方提供的华为分享图标内容,既可以符合HarmonyOS原生应用的开发上架运营规范,又可以防止使用别人的内容产生的侵权意外情况等&…...
Java基础-反射
代理相关 为什么需要代理? 代理可以无侵入式的对方法进行增强,而不需要修改原始方法的代码,这样就可以在不修改原始方法的情况下,对方法进行增强。 代理长什么样子? 代理里面就是对象要被代理的方法 Java通过什么方式…...
计算机毕设 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化
# 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通…...
【转载】 Bytedance火山引擎智能拥塞控制算法 VICC
BytedanceTechBlog : 火山引擎实时、低延时拥塞控制算法的优化实践 火山引擎 网站如何利用播放器节省20%点播成本点击下面的链接进入原文:原创 翟强俊、唐辉 字节跳动技术团队 2023-10-18 11:59 发表于北京 一些专利摘要 火山引擎智能拥塞控制算法 VICC(Volcano Intelligent…...
Postman如何测试WebService接口
前言: 由于工作所需,需要使用Postman测试工具,对基于ws规范的WebService接口进行测试.在经过多种尝试后,终于找到了正确的测试方法.下面我便详细记录测试步骤,以便以后再次测试时可以拿来主义. 第一步:确保WebService服务端正常启动(注意服务端各个接口发布的url地址) 第二步…...
微服务-Eureka
文章目录 提供者与消费者Eureka注册中心搭建EurekaServer服务注册服务发现项目结构 提供者与消费者 Eureka注册中心 服务消费者该如何获取服务提供者的地址信息? 服务提供者启动时向eureka注册自己的信息 eureka保存这些信息 消费者根据服务名称向eureka拉取提供者信…...
超声电机工作原理
超声波电机的工作原理 在压电陶瓷振子上加高频交流电压时,利用逆压电效应或电致伸缩效应使定子产生微观机械振动。并将这种振动通过共振放大和摩擦耦合变换成旋转或直线型运动。 超声波驱动有两个前提条件: 需在定子表面激励出稳态的质点椭圆运动轨迹…...
改进无人机三维路径规划(蜣螂优化算法)Matlab程序
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...
深度解析Windows驱动管理:DriverStore Explorer高效清理冗余驱动实战指南
深度解析Windows驱动管理:DriverStore Explorer高效清理冗余驱动实战指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer DriverStore Explorer(简称RAPR&#x…...
避坑!这些毕设太好抄了,3000+毕设案例推荐第1038期
381、基于Java的对外公告智慧管理系统的设计与实现(论文+代码+PPT)对外公告智慧管理系统主要功能包括:会员管理、公告管理、审核任务、审核节点、审核日志、回复管理、通知管理、通知接收者、工作流管理、组织机构、消息推送、消息推送接收者…...
别再只查表了!用MATLAB调用Python包(如NumPy, Pandas)的完整环境配置教程
MATLAB与Python强强联合:从环境配置到实战调用的全流程指南 当MATLAB遇上Python,会碰撞出怎样的火花?作为两个在科学计算领域举足轻重的工具,MATLAB以其强大的矩阵运算和可视化能力著称,而Python则凭借丰富的第三方库生…...
Modelsim 10.7/2019.5 破解后启动报错:HostID格式异常排查与修复
1. 破解后启动报错的典型现象 最近在折腾Modelsim 10.7和2019.5版本时,遇到了一个让人抓狂的问题:明明按照网上的破解教程一步步操作,环境变量也设置正确,但启动软件时还是弹出了license报错。这个错误提示特别有意思,…...
迎战2026知网最严查重:零成本脱“AI味”!10款免费工具硬核排雷红黑榜
四月一到,查重和AIGC检测成了两座大山。 自己熬夜敲的字被判AI生成,或者润色后满篇通红,这绝望感谁懂? 为了搞定论文降aigc这个大坑,我拿手头几篇废稿,去市面上热门的10款降ai率工具滚了一圈。今天这篇吐…...
Python实战:海康工业相机主动取流(getoneframetimeout)图像数据解析与OpenCV实时显示优化
1. 海康工业相机主动取流技术解析 第一次接触海康工业相机的主动取流功能时,我踩了不少坑。当时项目需要实时监控生产线上的产品缺陷,要求每秒处理25帧以上的图像数据。经过反复测试发现,主动取流方式(getoneframetimeout…...
答辩PPT不用愁,百考通AI助你高效搞定毕业答辩全流程
告别熬夜与焦虑,3分钟生成专业级答辩PPT 临近毕业季,当论文终于定稿,许多同学本以为可以松一口气,却发现自己又面临新的挑战——毕业论文答辩PPT的制作。这最后一关,往往成为不少毕业生的“拦路虎”。 面对几十页的论…...
Sigma-Delta ADC原理深度解析:从过采样到噪声整形
1. Sigma-Delta ADC的核心价值:为什么选择它? 在模数转换器(ADC)的世界里,Sigma-Delta架构就像是一位擅长"慢工出细活"的匠人。你可能听说过Pipelined ADC的高速特性,或者SAR ADC的平衡表现&…...
详细指南!2026年HR人力资源管理软件排行榜
HR人力资源管理软件是帮助企业数字化管理招聘、入离职、组织人事、薪酬考勤、绩效考核等全流程的系统工具。2026年国内主流HR人力资源管理软件包括Moka、北森、用友、金蝶、飞书、钉钉、薪人薪事、i人事等,其中Moka凭借AI原生能力和一体化产品架构,在中大…...
