直接插入排序和冒泡排序

核心思路不同

  • 冒泡排序:通过重复比较相邻的元素,每次将较大(或较小)的元素"冒泡"到数列的一端。每一轮都会让一个最大(或最小)的元素移动到最终位置。

  • 直接插入排序:将数列分为"已排序"和"未排序"两部分,每次从"未排序"部分取一个元素,插入到"已排序"部分的合适位置,使"已排序"部分始终保持有序。

核心思路不同

  • 冒泡排序:通过重复比较相邻的元素,每次将较大(或较小)的元素"冒泡"到数列的一端。就像水中的气泡逐渐上浮,每一轮都会让一个最大(或最小)的元素移动到最终位置。

  • 直接插入排序:将数列分为"已排序"和"未排序"两部分,每次从"未排序"部分取一个元素,插入到"已排序"部分的合适位置,使"已排序"部分始终保持有序。类似整理手牌时,将新抽的牌插到正确位置。

操作方式不同

  • 冒泡排序:通过相邻元素的两两比较和交换来实现排序,每一轮遍历会确定一个元素的最终位置,需要多次遍历整个数列。

  • 直接插入排序:逐个处理未排序元素,将其与已排序部分的元素从后往前比较,找到插入位置后移动元素并插入,只需遍历一次未排序部分。

适用场景不同

  • 冒泡排序:适用于数据量较小的场景,但其交换操作较多,效率较低,实际应用中较少使用。

  • 直接插入排序:在数据基本有序时效率很高(接近O(n)),适合小规模数据或作为复杂排序算法的子过程(如希尔排序)。

两种算法的时间复杂度均为O(n²),但直接插入排序的实际性能通常优于冒泡排序。

相关推荐
A_nanda5 小时前
c# MOdbus rto读写串口,如何不相互影响
算法·c#·多线程
代码雕刻家7 小时前
2.4.蓝桥杯-分巧克力
算法·蓝桥杯
Ulyanov7 小时前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
智者知已应修善业8 小时前
【查找字符最大下标以*符号分割以**结束】2024-12-24
c语言·c++·经验分享·笔记·算法
91刘仁德9 小时前
c++类和对象(下)
c语言·jvm·c++·经验分享·笔记·算法
diediedei9 小时前
模板编译期类型检查
开发语言·c++·算法
阿杰学AI9 小时前
AI核心知识78——大语言模型之CLM(简洁且通俗易懂版)
人工智能·算法·ai·语言模型·rag·clm·语境化语言模型
mmz12079 小时前
分治算法(c++)
c++·算法
睡一觉就好了。9 小时前
快速排序——霍尔排序,前后指针排序,非递归排序
数据结构·算法·排序算法
Tansmjs10 小时前
C++编译期数据结构
开发语言·c++·算法