新闻中心

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

2025-11-25
浏览次数:
返回列表
冒泡排序通过相邻元素交换将最大值逐步“浮”到末尾,每轮确定一个最大值位置,具有稳定性但时间复杂度为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),将数组分为小于和大于基准的两部分,递归排序。

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

汕头吧网上商城系统 汕头吧网上商城系统

特点与优点:1.界面布局合理美观,浏览方便,更具商城站点的风格;2.前后台功能强大好用,如三级分类、竞拍、排行榜、特价、促销、积分等;3.更具人性化,如定单反馈、会员与VIP分别显示不同的售价等;4.优化程序代码,执行速度快速;5.不错的短信联络管理员以及留言本的悄悄话功能等。功能介绍:商品的添加、修改、删除。 管理商品的订单及修改订单状态和网友对商品的评论。管理网站前台用户,可进行修改、删除操作

汕头吧网上商城系统 0 查看详情 汕头吧网上商城系统 实现代码:

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冒泡排序、快速排序、堆排序的详细内容,更多请关注其它相关文章!


# 命令行  # 高州网站建设推广多少钱  # 临县网站推广趋势  # 清溪网站建设设计  # 吴川推广网站  # 祁门县网络推广营销公司  # 学了sem会seo吗  # 网站健设推广产品多少钱  # 铜山区网站优化公司  # 肇庆seo资料站  # 宁夏网站建设平台  # 如何将  # python  # 两部分  # 转换为  # 更具  # 不稳定  # 各有  # 但不  # 汕头  # 递归  # 冒泡排序  # 排序算法  # 排序 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Composer中的^和~符号代表什么_精通Composer版本号语义化约束  动漫岛观看全网网 动漫岛在线正版动漫入口  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题  蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版  如何使用Node.js csv 包按条件移除含空字段的CSV记录  React项目中导航栏Logo自适应布局:避免裁剪与布局溢出  离线运行Go语言之旅:本地部署与GOPATH配置指南  微信怎么把收藏的内容分类管理 微信收藏内容标签分类方法  Python中如何避免重复条件判断:利用数据结构实现动态逻辑  uc浏览器网页版极速入口 uc网页浏览器网页版流畅体验  飞书妙记怎样用语音转文字速记_飞书妙记用语音转文字速记【速记方法】  Pandas DataFrame:高效添加条件计算列  PHP中获取MongoDB服务器运行时间(Uptime)的专业指南  如何在CSS中使用浮动制作导航栏_float实现水平菜单  基于动态规划的房屋花卉种植最小成本算法详解  德邦快递查询平台 德邦快递物流信息查询入口  PDF怎么合并PDF并保持格式_PDF合并文件保持排版教程  Basecamp怎样用留言钉固定重点_Basecamp用留言钉固定重点【重点标记】  C++指针和引用有什么区别_C++内存管理核心概念深度解析  微信网页版官方入口直达 微信网页版网页版登录使用方法  C#使用XPath查询节点时出错? 常见语法错误与调试技巧  HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解  c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解  J*a递归快速排序中静态变量的状态管理与陷阱  小红书网页版入口链接分享 小红书官网直接进  台积电1.4nm工艺A14瞄准2028:10年来性能提升80%  向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程  腾讯视频怎么使用多账号家庭管理_腾讯视频家庭多账号统一管理与权限分配教程  Linux如何排查内存不足OOME问题_LinuxOOM分析教程  如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略  理解J*aScript Promise的微任务队列与执行顺序  yy漫画网页版官方入口_yy漫画官网登录页面链接  俄罗斯Yandex搜索引擎入口_Yandex官网免登录一键访问  Spring Boot嵌入式服务器与J*a EE:功能支持深度解析  J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析  Composer如何解决json扩展缺失的错误  TikTok评论显示延迟如何处理 TikTok评论刷新优化方法  Tabulator表格日期时间排序问题及自定义解决方案  必由学在线入口 必由学网页版快速登录入口  C++如何操作注册表_Windows平台下C++读写注册表的API函数详解  响应式图片在网页设计中的正确实现方法  AWS EC2实例间SQL Server连接超时:安全组配置与故障排除指南  谷歌google账号注册详细步骤 谷歌账号注册官方教程  sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置  一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法  微信网页版官方入口教程 微信网页版网页版快速登录步骤  实现全屏滚动与导航点:专业教程  浏览器打开即用 美图秀秀网页版入口  J*a应用程序首次运行自动创建文件与目录的最佳实践 

搜索