【入门】如何理解冒泡排序
以下是带有详细注释的 冒泡排序 代码,帮助你理解每一行的作用:
逐行解释
def bubbleSort(arr):
定义一个名为 bubbleSort 的函数,接受一个列表 arr 作为参数。
for i in range(1, len(arr)):
外层循环,控制排序的轮数。
i 从 1 开始,表示每轮排序会将当前未排序部分的最大元素“冒泡”到正确的位置。
len(arr) 是列表的长度,循环次数为 len(arr) - 1。
for j in range(0, len(arr)-i):
内层循环,遍历未排序的部分。
j 从 0 开始,表示当前比较的元素索引。
len(arr)-i 是每轮排序的范围,因为每轮排序后,最后的 i 个元素已经有序,无需再比较。
if arr[j] > arr[j+1]:
比较相邻的两个元素。
如果前一个元素 arr[j] 大于后一个元素 arr[j+1],则需要交换它们的位置。
arr[j], arr[j + 1] = arr[j + 1], arr[j]
交换两个元素的位置。
这是 Python 中交换两个变量的简洁写法。
return arr
返回排序后的列表。
总结
冒泡排序的核心思想是通过不断比较和交换相邻元素,将较大的元素逐渐“冒泡”到列表的末尾。
外层循环控制排序的轮数,内层循环实现每轮的比较和交换。
时间复杂度为 O(n²),适合小规模数据排序。