排序算法-冒泡排序

排序算法(sorting algorithm)用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用,因为有序 数据通常能够被更高效地查找、分析和处理。

++冒泡排序++

++冒泡排序(bubble sort)++通过连续地比较与交换相邻元素实现排序。这个过程就像气泡从底部升到顶部一样,因此得名冒泡排序。

步骤

  1. 首先,对 n 个元素执行"冒泡",将数组的最大元素交换至正确位置
  2. 接下来,对剩余 n-1 个元素执行"冒泡",将第二大元素交换至正确位置
  3. 以此类推,经过 n-1 轮"冒泡"后,前 n-1 大的元素都被交换至正确位置
  4. 仅剩的一个元素必定是最小元素,无须排序,因此数组排序完成。

演示流程

python代码实现

python 复制代码
def bubble_sort_with_flag(nums: list[int]):
    """冒泡排序(标志优化)"""
    n = len(nums)
    # 外循环:未排序区间为 [0, i]
    for i in range(n - 1, 0, -1):
        flag = False  # 初始化标志位
        # 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端
        for j in range(i):
            if nums[j] > nums[j + 1]:
                # 交换 nums[j] 与 nums[j + 1]
                nums[j], nums[j + 1] = nums[j + 1], nums[j]
                flag = True  # 记录交换元素
        if not flag:
            break  # 此轮"冒泡"未交换任何元素,直接跳出

算法特性

  • 时间复杂度为 、自适应排序 :各轮"冒泡"遍历的数组长度依次为 n、n-1、...、3、2 ,总和为 。在引入 flag 优化后,最佳时间复杂度可达到
  • 空间复杂度为 、原地排序:指针 i 和 j 使用常数大小的额外空间。
  • 稳定排序:由于在"冒泡"中遇到相等元素不交换。
相关推荐
Lumos18636 分钟前
51单片机从零到实战(完结)——后续学习路线建议
算法
稚南城才子,乌衣巷风流40 分钟前
DFS序详解:原理、应用与实现
算法·深度优先·图论
稚南城才子,乌衣巷风流1 小时前
动态树(Dynamic Tree)数据结构详解
数据结构·算法
变量未定义~2 小时前
最小生成树1(Prim模板)、最小生成树2(kruskal模板)、最近公共祖先(模板)
算法
这就是佬们吗2 小时前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
LONGZETECH2 小时前
新能源汽车充电设备装配与调试仿真教学软件 技术架构与核心实现解析
大数据·算法·3d·unity·架构·汽车
自学小白菜2 小时前
关于提升机器学习算法做预测回归任务精度的方法分享
算法·机器学习·回归·提升精度
学废了wuwu2 小时前
从入门到实战:深入浅出模型压缩三大核心——剪枝、彩票假设与知识蒸馏
人工智能·算法·剪枝
小肝一下2 小时前
3. 单链表
c语言·数据结构·c++·算法·leetcode·链表·dijkstra
劈星斩月2 小时前
监督学习算法 之 决策树
学习·算法·决策树