news 2026/4/29 6:08:26

LeetCode 冒泡排序题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 冒泡排序题解

LeetCode 冒泡排序题解

题目描述

实现冒泡排序算法,对一个整数数组进行排序。

示例

输入:[64, 34, 25, 12, 22, 11, 90]
输出:[11, 12, 22, 25, 34, 64, 90]

解题思路

方法:冒泡排序

思路

  • 冒泡排序的核心思想是通过相邻元素的比较和交换,使得每一轮循环都能将当前未排序部分的最大值移到末尾。
  • 具体步骤:
    1. 遍历数组,比较相邻的两个元素。
    2. 如果前一个元素大于后一个元素,则交换它们。
    3. 重复上述步骤,直到没有需要交换的元素。

复杂度分析

  • 时间复杂度:O(n²),其中 n 是数组的长度。最坏情况下,需要进行 n(n-1)/2 次比较和交换。
  • 空间复杂度:O(1),只需要常数级的额外空间。

代码实现

方法:冒泡排序

# 冒泡排序 def bubble_sort(arr): n = len(arr) # 遍历所有数组元素 for i in range(n): # 标记本轮是否有交换 swapped = False # 最后 i 个元素已经排好序,不需要再比较 for j in range(0, n - i - 1): # 如果当前元素大于下一个元素,交换它们 if arr[j] > arr[j + 1]: arr[j], arr[j + 1] = arr[j + 1], arr[j] swapped = True # 如果本轮没有交换,说明数组已经有序,提前结束 if not swapped: break return arr # 测试 def test_bubble_sort(): arr = [64, 34, 25, 12, 22, 11, 90] print(bubble_sort(arr)) # 输出:[11, 12, 22, 25, 34, 64, 90] arr = [5, 4, 3, 2, 1] print(bubble_sort(arr)) # 输出:[1, 2, 3, 4, 5] arr = [1, 2, 3, 4, 5] print(bubble_sort(arr)) # 输出:[1, 2, 3, 4, 5] if __name__ == "__main__": test_bubble_sort()

测试用例

测试用例 1:基本情况

输入:[64, 34, 25, 12, 22, 11, 90]
输出:[11, 12, 22, 25, 34, 64, 90]

测试用例 2:逆序数组

输入:[5, 4, 3, 2, 1]
输出:[1, 2, 3, 4, 5]

测试用例 3:已排序数组

输入:[1, 2, 3, 4, 5]
输出:[1, 2, 3, 4, 5]

总结

冒泡排序是一种简单的排序算法,它通过相邻元素的比较和交换来实现排序。虽然冒泡排序的时间复杂度较高,但它的实现简单,对于小规模数据或基本有序的数据来说,效率还是可以接受的。

冒泡排序的核心思想是:通过相邻元素的比较和交换,使得每一轮循环都能将当前未排序部分的最大值移到末尾。

掌握冒泡排序的原理和实现,对于理解排序算法的基本思想非常重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 6:07:14

OpenClaw碳硅共生契约——在文明悬崖边缘的终极立法(第二十篇)

OpenClaw碳硅共生契约——在文明悬崖边缘的终极立法(第二十篇)导言:在悬崖边起舞,用冷酷的现实守护炽热的理想历时四篇,我们完成了一场穿透OpenClaw现象的深渊远征。在第一篇中,我们凝视其作为“反熵共同体…

作者头像 李华
网站建设 2026/4/29 6:06:22

cuTile.jl:Julia中的CUDA瓦片编程革命

1. 初识cuTile.jl:为Julia带来革命性的CUDA瓦片编程作为一名长期在GPU高性能计算领域摸爬滚打的开发者,当我第一次接触cuTile.jl时,立刻意识到这将改变Julia生态中GPU编程的游戏规则。NVIDIA CUDA Tile技术通过抽象化硬件细节,让开…

作者头像 李华
网站建设 2026/4/29 6:01:27

AI写论文攻略在此!4款AI论文生成工具,开启高效论文写作!

仍然在为论文的撰写而感到烦恼吗? 仍然在为论文的撰写而感到烦恼吗?无论是期刊论文、毕业论文,还是职称论文,人工撰写的过程往往像是在大海中捞针。面对数量庞大的文献,一些复杂的格式要求更是让人焦头烂额&#xff0…

作者头像 李华
网站建设 2026/4/29 6:01:22

嘎嘎降AI和PaperRR哪个术语保护更好:2026年学术场景实测对比

嘎嘎降AI和PaperRR哪个术语保护更好:2026年学术场景实测对比 总有人问我选哪个降AI工具,这篇文章把主流的几款都对比一遍。 综合推荐嘎嘎降AI(www.aigcleaner.com),4.8元,99.26%达标率。不同场景有不同需…

作者头像 李华
网站建设 2026/4/29 6:00:22

保姆级教程:用Python符号求导搞定PX4 EKF2里最头疼的雅可比矩阵

用Python符号计算征服PX4 EKF2中的雅可比矩阵难题 在无人机和自动驾驶系统的开发中,状态估计是核心环节之一,而扩展卡尔曼滤波器(EKF)则是实现高精度状态估计的黄金标准。PX4飞控系统中的EKF2实现尤为复杂,其中涉及旋转的雅可比矩阵推导更是让…

作者头像 李华