直接插入排序和冒泡排序

核心思路不同

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

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

核心思路不同

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

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

操作方式不同

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

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

适用场景不同

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

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

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

相关推荐
weixin_307779133 小时前
扇形区域拉普拉斯方程傅里叶解法2
算法
宴之敖者、9 小时前
数组——初识数据结构
c语言·开发语言·数据结构·算法
不想学习\??!10 小时前
c练习-c基础
数据结构·算法
伊织code10 小时前
OpenCV 官翻8 - 其他算法
人工智能·opencv·算法·拼接·光流·成像
এ᭄画画的北北12 小时前
力扣-198.打家劫舍
算法·leetcode
橙小花12 小时前
C语言:break、continue、猜拳游戏
c语言·算法·游戏
Mr_Swilder13 小时前
一种可扩展且可用于生产环境的天空与大气渲染技术
前端·javascript·算法
Himon13 小时前
LLM参数有效性学习综述
人工智能·算法·nlp
এ᭄画画的北北13 小时前
力扣-300.最长递增子序列
算法·leetcode
晨曦学习日记13 小时前
Leetcode题解:209长度最小的子数组,掌握滑动窗口从此开始!!!
数据结构·算法·leetcode