数据结构——直接插入排序 一、基本知识1.排序默认递增。2.定义每一趟把待排序序列的第一个值插入到前面的已经排序好的序列。不申请额外的空间在原序列的基础上进行排序所以就需要避免覆盖的问题。二、基本原理将数组分成已排序区间和未排序区间1.第一个元素单独作为已排序区间剩余所有元素是未排序区间假设我们现在有一个待排序序列默认第一个数据就是一个已经排序好的序列因为我们此时将第一个数据看成一个单独的序列因为只有一个数据所以不存在是否有序无序也就是说它是一个有序序列。2.依次取出未排序区间的第一个元素向前插入到已排序区间的合适位置。以上面序列为例①第一趟思想未排序区间第一个元素是18根据比较得到1859又因为默认排序是递增的所以18应该在59的左边。操作此时我们已经知道18应该在0号下标59应该在1号下标但是插入排序是在原序列的基础上进行排序所以在数据移动时就需要将18提前拷贝下来避免覆盖之后让59进行数据移动到1号下标再让已经拷贝下来的18移动到0号下标。此时已排序好的序列就是18 59 从72开始就是未排序序列②第二趟思想此时72是未排序区间的第一个值将72和已排序区间59 18进行比较因为序列是递增的所以我们发现72比59大所以72应该放在59的后面。操作我们将待排序序列的第一个值拷贝下来因为计算机开始不知道这个待排序数据应该在那个下标所以我们还是要先将待排序的数据进行拷贝避免后续可能会出现的数据覆盖。将72和已经排序好的序列进行比较5972所以72应该放置在59的后面。所以此时 18 59 72 是已经排序好的序列从85开始是未排序好的序列。③第三趟思想此时85是未排序序列的第一个元素将85和已排序好的序列18 59 72进行排序因为序列是递增的所以我们发现85比72小应该放在72的后面。操作将待排序序列的第一个元素85拷贝下来和已经排序好的序列进行数据比较728585就放到72的后面④后续雷同............三、代码实现void Insert_Sort(int arr[], int len) { for (int i 1;i len;i)//控制的是趟数 { int temp arr[i]; int j i - 1; for (;j 0;i--)//控制的是对已经排好的序列从右至左依次遍历 { if (temparr[j])//如果比我取出来的temp大向后挪动 { arr[j 1] arr[j]; } else { break; //情况1遇到了不大于我的值停下来把值放回去。 } } //情况2越界了停下来把值放回去 arr[j 1] temp; } }

相关新闻

最新新闻

我用了 8 个月 Codex CLI,总结出这套 AI 编程工作流

我用了 8 个月 Codex CLI,总结出这套 AI 编程工作流

久没更新文章了。这段时间确实太忙,一直在公司里推进 AI 项目开发。很多事情从需求拆解、方案设计、前后端开发,到 Agent、RAG、接口联调、上线排查,基本都是我一个人往前扛,不过好在有我的战友和我战斗,Codex&#xf…

2026/7/9 6:16:35
一文读懂:2026年如何利用 Apifox CLI 与 AI Agent 实现接口零代码联调

一文读懂:2026年如何利用 Apifox CLI 与 AI Agent 实现接口零代码联调

各位 CSDN 博主、开发者大家好。本文将为大家系统全面地讲解涉及到底层架构与代码实战的核心技术点,建议收藏备用。 这是我们探讨 Apifox CLI 深度应用系列的第一篇。 最近,像 Cursor 这样的人工智能编程软件火遍全网。但是,当 AI 需要对后…

2026/7/9 6:16:35
动态内存管理(malloc/calloc/realloc/free) + 内存五大分区 完全笔记

动态内存管理(malloc/calloc/realloc/free) + 内存五大分区 完全笔记

说明:栈(Stack)和堆(Heap)在STM32上具体怎么配置大小、怎么排查栈溢出, "内存管理笔记"里已经详细讲过,这篇不重复展开,只在讲五大分区时简要提及、 串联起来,重点放在malloc家族函数的细节和.text/.rodata/.data/.bss这几个 "编译期就确定"的静态分区…

2026/7/9 6:16:35
粉笔vs中公:线上公考培训,谁的技术更硬?

粉笔vs中公:线上公考培训,谁的技术更硬?

核心结论:粉笔和中公代表了公考培训行业的两种截然不同的路线——粉笔是"技术驱动型",以AI和线上产品为核心竞争力;中公是"渠道驱动型",以300地级市线下网点和面授服务为核心优势。在线上培训维度&#xff0c…

2026/7/9 6:16:35
VIN码查询接口开发,快速获取车辆完整参数信息

VIN码查询接口开发,快速获取车辆完整参数信息

每个人都有自己的身份证,每一辆车也有自己的独特身份证明,那就是“VIN”。VIN码,全称为Vehicle Identification Number,意思是“车辆识别码”或“车架号”,每辆车都有独属于自己的17位VIN编码,它的作用是标…

2026/7/9 6:16:35
百度网盘 YunShellExtV164.dll 注入排查:3步定位explorer/Everything高CPU元凶

百度网盘 YunShellExtV164.dll 注入排查:3步定位explorer/Everything高CPU元凶

百度网盘YunShellExtV164.dll注入排查:3步定位explorer/Everything高CPU元凶 当Windows资源管理器(explorer.exe)或Everything搜索工具突然出现CPU占用飙升时,许多用户的第一反应是系统本身出了问题。然而,经过大量用户案例验证,百…

2026/7/9 6:11:35

月新闻