直接插入排序和冒泡排序

核心思路不同

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

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

核心思路不同

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

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

操作方式不同

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

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

适用场景不同

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

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

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

相关推荐
Elias不吃糖7 分钟前
LeetCode每日一练(3)
c++·算法·leetcode
小龙报23 分钟前
《算法通关指南数据结构和算法篇(2)--- 链表专题》
c语言·数据结构·c++·算法·链表·学习方法·visual studio
艾莉丝努力练剑43 分钟前
【优选算法必刷100题】第031~32题(前缀和算法):连续数组、矩阵区域和
大数据·人工智能·线性代数·算法·矩阵·二维前缀和
醉颜凉1 小时前
环形房屋如何 “安全劫舍”?动态规划解题逻辑与技巧
c语言·算法·动态规划
大雨淅淅1 小时前
一文搞懂动态规划:从入门到精通
算法·动态规划
不去幼儿园1 小时前
【启发式算法】灰狼优化算法(Grey Wolf Optimizer, GWO)详细介绍(Python)
人工智能·python·算法·机器学习·启发式算法
随意起个昵称1 小时前
【二分】洛谷P2920,P2985做题小记
c++·算法
没书读了1 小时前
计算机组成原理-考前记忆清单
线性代数·算法
Hcoco_me1 小时前
大模型面试题5:矩阵(M*M)特征值分解的步骤
算法·机器学习·矩阵
非著名架构师2 小时前
极端天气下的供应链韧性:制造企业如何构建气象风险防御体系
大数据·人工智能·算法·制造·疾风气象大模型·风光功率预测