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

冒泡排序、快速排序和堆排序是常见的排序算法,各有特点。下面用 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应用程序首次运行自动创建文件与目录的最佳实践


2025-11-25
浏览次数:次
返回列表