冒泡排序实验笔记:从轮次优化到边界控制
【摘要】 冒泡排序实验笔记:从轮次优化到边界控制今天在华为云 KooLabs 完成了“Python3 冒泡排序”云实验,把一个基础算法重新过了一遍,过程中有三点体会特别适合记录下来。 1. 冒泡排序的核心是“相邻比较 + 逐轮沉淀”每一轮从左到右比较相邻元素,较大的值不断向后交换;每一轮结束后,当前未排序区间的最大值会落到右端。因此,如果列表长度是 n,最多需要 n-1 轮。def bubble_so...
冒泡排序实验笔记:从轮次优化到边界控制
今天在华为云 KooLabs 完成了“Python3 冒泡排序”云实验,把一个基础算法重新过了一遍,过程中有三点体会特别适合记录下来。
1. 冒泡排序的核心是“相邻比较 + 逐轮沉淀”
每一轮从左到右比较相邻元素,较大的值不断向后交换;每一轮结束后,当前未排序区间的最大值会落到右端。因此,如果列表长度是 n,最多需要 n-1 轮。
def bubble_sort_basic(nums):
n = len(nums)
for i in range(n - 1):
for j in range(n - 1 - i):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
return nums
2. 提前退出比“完整跑完”更重要
如果某一轮没有发生任何交换,说明序列已经有序,后面的轮次都可以跳过。用一个 swapped 标记记录本轮状态,可以把接近有序数据的复杂度从固定 O(n²) 降到最好情况的 O(n)。
def bubble_sort_optimized(nums):
n = len(nums)
for i in range(n - 1):
swapped = False
for j in range(n - 1 - i):
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
swapped = True
if not swapped:
break
return nums
3. 云实验里的验证方法
实验时不要只验证一个样例。可以分别准备:
- 已经有序的列表:验证提前退出逻辑;
- 逆序列表:观察最大交换次数;
- 含重复值的列表:确认稳定排序的特性;
- 空列表和单元素列表:检查边界条件。
华为云实验环境的好处是可以直接在浏览器里运行和查看输出,不用先花时间搭建本地 Python 环境。对初学者来说,边看实验指引边改代码,比只看理论更容易理解轮次边界为什么写成 n - 1 - i。
总结一句:冒泡排序虽然是入门算法,但它的优化思路很有代表性——先写出正确版本,再根据实际运行状态减少无效比较。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)