直接插入排序和冒泡排序

核心思路不同

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

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

核心思路不同

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

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

操作方式不同

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

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

适用场景不同

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

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

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

相关推荐
小刘的AI小站20 分钟前
leetcode hot100 二叉搜索树
算法·leetcode
自信的小螺丝钉21 分钟前
Leetcode 876. 链表的中间结点 快慢指针
算法·leetcode·链表·指针
红豆怪怪22 分钟前
[LeetCode 热题 100] 32. 最长有效括号
数据结构·python·算法·leetcode·动态规划·代理模式
愚润求学28 分钟前
【贪心算法】day6
c++·算法·leetcode·贪心算法
AI 嗯啦39 分钟前
计算机的排序方法
数据结构·算法·排序算法
l12345sy1 小时前
Day23_【机器学习—聚类算法—K-Means聚类 及评估指标SSE、SC、CH】
算法·机器学习·kmeans·聚类·sse·sc·ch
_Coin_-1 小时前
算法训练营DAY58 第十一章:图论part08
数据结构·算法·图论
scx201310041 小时前
P13929 [蓝桥杯 2022 省 Java B] 山 题解
c++·算法·蓝桥杯·洛谷
YC运维2 小时前
Ansible题目全解析与答案
java·算法·ansible
小欣加油3 小时前
leetcode 912 排序数组(归并排序)
数据结构·c++·算法·leetcode·排序算法