1.冒泡排序的基本原理
对存放原始数组的数据,按照从前往后的方向进行多次扫描,每次扫描都称为一趟。当发现相邻两个数据的大小次序不符合时,即将这两个数据进行互换,如果从小大小排序,这时较小的数据就会逐个往前移动,好像气泡网上漂浮一样。
2.冒泡排序的特点:
升序排序当中每一轮比较会把最大的数沉到最底(这里以从小到大为例),所有相互比较的次数每一轮会比前一轮少一次。
def bubble_sort(arr):
"""
冒泡排序函数
:param arr: 待排序的列表
:return: 排序后的列表
"""
n = len(arr) # 获取列表长度
for i in range(n - 1): # 外层循环控制比较的轮数
for j in range(n - 1 - i): # 内层循环控制每轮比较的次数
if arr[j] > arr[j + 1]: # 如果前一个元素大于后一个元素
arr[j], arr[j + 1] = arr[j + 1], arr[j] # 交换两个元素的位置
return arr
# 测试代码
my_list = [5, 4 ,3 , 2, 1]
sorted_list = bubble_sort(my_list)
print(sorted_list)
# bubble_sort 函数接受一个待排序的列表作为参数,并返回排序后的列表。
# n = len(arr) 获取列表的长度,用于控制循环次数。
# 外层循环 for i in range(n - 1): 控制比较的轮数,每一轮都会将最大的元素移动到末尾。
# 内层循环 for j in range(n - 1 - i): 控制每轮比较的次数,每一轮都会将当前未排序部分的最大元素移动到末尾。
# if arr[j] > arr[j + 1]: 判断前一个元素是否大于后一个元素,如果是,则交换它们的位置。
# arr[j], arr[j + 1] = arr[j + 1], arr[j] 使用Python的多重赋值语句交换两个元素的位置。