#04 简单

题目描述

实现冒泡排序算法,将一个列表按升序排列。冒泡排序通过重复遍历列表,比较相邻元素并交换顺序不对的元素对。

示例

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

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

提示

使用双重循环,外层循环控制趟数,内层循环比较相邻元素。每趟将最大值"冒泡"到最后。

参考答案

def bubble_sort(arr):
    """冒泡排序"""
    n = len(arr)
    for i in range(n):
        swapped = False
        # 每次将最大元素冒泡到末尾
        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

# 测试
print(bubble_sort([64, 34, 25, 12, 22, 11, 90]))
# [11, 12, 22, 25, 34, 64, 90]