冒泡排序

🎉摘要:Python 是一门解释型、面向对象、动态类型的高级编程语言,由荷兰程序员 Guido van Rossum 于 1991 年发布,核心设计理念是优雅、明确、简单。

冒泡排序(Bubble Sort) 是一种最简单的交换排序算法。

其核心思想是重复遍历要排序的数列,一次比较两个相邻元素,如果它们的顺序错误就把它们交换过来。此时,越大的元素会经由交换慢慢“浮”到数列的顶端(末尾),像气泡上浮一样,所以叫冒泡排序

冒泡排序的步骤如下:

(1)从第一个元素开始,比较相邻两个元素

(2)如果前一个 > 后一个,就交换它们

(3)一轮走完,最大的元素会被 “冒” 到最后

(4)对剩下的元素重复上述过程,直到没有交换发生,说明已经有序

例如,下面是对 [5, 2, 9, 1, 5, 6] 数组排序的过程:

[5, 2, 9, 1, 5, 6]
[5, 2, 1, 5, 6, 9]
[2, 1, 5, 5, 6, 9]
[1, 2, 5, 5, 6, 9]

示例代码:

def bubble_sort(arr):
    # 复制一份,避免修改原列表
    arr = arr.copy()
    # 获取列表长度
    n = len(arr)

    # 外层循环:控制排序轮数,一共需要 n-1 轮
    for i in range(n - 1):
        # 标记本轮是否发生交换,没有交换说明已经有序,可以提前结束
        swapped = False

        # 内层循环:每轮比较到 n-1-i 的位置(后面 i 个已经排好)
        for j in range(n - 1 - i):
            # 如果前一个数 > 后一个数,交换
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
                swapped = True

        # 如果本轮没有交换,直接退出
        if not swapped:
            break

    return arr


if __name__ == "__main__":
    nums = [5, 2, 9, 1, 5, 6]
    print("原始列表:", nums)
    print("冒泡排序后:", bubble_sort(nums))

运行结果:

原始列表: [5, 2, 9, 1, 5, 6]
冒泡排序后: [1, 2, 5, 5, 6, 9]

  



说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号