Python冒泡排序、快速排序、堆排序

冰川箭仙
发布: 2025-11-25 13:09:08
原创
696人浏览过
冒泡排序通过相邻元素交换将最大值逐步“浮”到末尾,每轮确定一个最大值位置,具有稳定性但时间复杂度为O(n²),适合小数据量或教学演示;快速排序采用分治策略,选取基准值将数组划分为两部分并递归排序,平均时间复杂度O(n log n),效率高但不稳定,广泛应用于实际场景;堆排序基于最大堆性质,每次取出堆顶最大元素并重建堆,时间复杂度O(n log n),空间复杂度低但不稳定,适用于对内存敏感的场景。三种算法各有优劣,应根据数据规模和稳定性需求选择合适方法。

python冒泡排序、快速排序、堆排序

冒泡排序、快速排序和堆排序是常见的排序算法,各有特点。下面用 Python 实现这三种排序方法,并简要说明其原理和性能。

1. 冒泡排序(Bubble Sort)

冒泡排序通过重复遍历数组,比较相邻元素并交换位置,将最大值“浮”到末尾。每轮确定一个最大值的位置。

特点:稳定、时间复杂度 O(n²),适合小数据量或教学演示。

实现代码:

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr

示例:
print(bubble_sort([64, 34, 25, 12, 22])) # 输出 [12, 22, 25, 34, 64]

2. 快速排序(Quick Sort)

快速排序采用分治策略:选一个基准值(pivot),将数组分为小于和大于基准的两部分,递归排序。

立即学习Python免费学习笔记(深入)”;

网群企业网站管理系统2.1
网群企业网站管理系统2.1

整站DIV+CSS布局,支持全部浏览器,加载访问速度更快,兼容性更强。 导航管理:不限制个数,支持排序和外联。 幻灯管理:支持文字、链接、不限制个数可以排序。 产品频道:支持独立关键字、关键描述,支持排序。 文章频道:支持独立关键字、关键描述,支持排序。 单页管理:不限制个数,支持简短和详细内容,支持排序。 在线留言:支持回复和审核功能。 友情链接:支持文字和logo链接两种 更新记录: 2013

网群企业网站管理系统2.1 0
查看详情 网群企业网站管理系统2.1

特点:平均时间复杂度 O(n log n),不稳定,实际应用中效率高。

实现代码:

def quick_sort(arr):
    if len(arr)         return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x     middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)

示例:
print(quick_sort([64, 34, 25, 12, 22])) # 输出 [12, 22, 25, 34, 64]

3. 堆排序(Heap Sort)

堆排序利用最大堆(或最小堆)的性质,每次取出堆顶最大元素放到末尾,重建堆。

特点:时间复杂度 O(n log n),不稳定,空间复杂度低。

实现代码:

def heapify(arr, n, i):
    largest = i
    l = 2 * i + 1
    r = 2 * i + 2

    if l arr[largest]:
        largest = l

    if r arr[largest]:
        largest = r

    if largest != i:
        arr[i], arr[largest] = arr[largest], arr[i]
        heapify(arr, n, largest)

def heap_sort(arr):
    n = len(arr)

    for i in range(n // 2 - 1, -1, -1):
        heapify(arr, n, i)

    for i in range(n - 1, 0, -1):
        arr[0], arr[i] = arr[i], arr[0]
        heapify(arr, i, 0)

    return arr

示例:
print(heap_sort([64, 34, 25, 12, 22])) # 输出 [12, 22, 25, 34, 64]

基本上就这些。冒泡简单但慢,快排高效常用,堆排序稳定高效但不保序。根据场景选择合适算法即可。

以上就是Python冒泡排序、快速排序、堆排序的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号