冒泡排序是通过重复遍历列表、比较相邻元素并交换使较大(或较小)元素逐步“冒泡”至一端的排序算法;Python实现中,外层控制轮数,内层两两比较交换,可用flag优化提前终止。
冒泡排序是一种基础的排序算法,原理简单:重复遍历列表,比较相邻元素,把较大的(或较小的)逐个“冒泡”到一端。Python 实现起来很直观,适合理解排序逻辑。
核心思路:每轮遍
历把当前未排序部分的最大值移到末尾。
说明:外层循环控制轮数(最多 n-1 轮),内层循环负责两两比较和交换;每轮结束后,末尾元素就已就位,所以下一轮范围可缩小。
建议写法:
示例代码:
def bubble_sort(arr):
n = len(arr)
for i in range(n):
swapped = False # 标记本轮是否发生交换
for j in range(0, 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
测试
nums = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(nums)) # [11, 12, 22, 25, 34, 64, 90]
把内层判断条件 arr[j] > arr[j + 1] 改成 arr[j] 即可,其余逻辑完全不变。
上面的实现是原地修改输入列表。如果想保留原列表不变,可以先复制一份:
基本上就这些。冒泡排序时间复杂度是 O(n²),不适合大数据量,但写起来快、逻辑清晰,是入门必练算法之一。
# python
# 冒泡排序
# 大数据
# app
# 排序算法
# 排列
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
php文件怎么变mp4保存_php输出视频流保存为mp4操作【操作】
Windows怎样拦截QQ浏览器广告_Windows拦截QQ浏览器广告方法【方法】
php订单日志怎么记录发货_php记录订单发货操作日志指南【指南】
如何在 PHP 单元测试中正确模拟带方法的图像处理门面(Facade)
如何提升Golang程序I/O性能_Golang I/O密集型程序优化示例
c++的STL算法库find怎么用 在容器中查找指定元素【实用教程】
c++的位运算怎么用 与、或、异或、移位操作详解【底层知识】
如何使用Golang实现云原生应用弹性伸缩_自动应对流量变化
mac怎么查看wifi密码_MAC查看已连接WiFi密码方法【技巧】
Win10电脑怎么设置IP地址_Windows10网络属性固定IP配置
php会话怎么开启_session_start函数的作用与使用时机【方法】
php删除数据怎么清空表_truncate与delete区别及用法【汇总】
如何在Golang中使用time处理时间_Golang time时间解析与格式化方法
mac怎么打开终端_MAC终端Terminal使用入门与常用命令【教程】
Linux怎么禁止Root用户远程登录_Linux系统SSH加固与安全设置【教程】
Go 中 := 短变量声明的类型推导机制详解
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Python集合操作技巧_高效去重解析【教程】
Django 密码修改后会话失效的解决方案
Windows 10怎么录屏_Windows 10使用Xbox Game Bar录制屏幕视频教程
如何在 IIS 上为 ASP.NET 6 应用排除特定目录并交由 PHP 处理
Win11怎么清理C盘系统日志_Win11清理系统日志文件【步骤】
Win11开始菜单打不开_修复Windows 11点击开始图标无响应【教程】
Windows10怎么查看硬件信息_Windows10硬件信息查询方法【指南】
Windows资源管理器总是卡顿或重启怎么办?(修复方法)
Win11怎么查看显卡显存_查询Win11显卡详细参数方法【步骤】
LINUX下如何配置VLAN虚拟局域网_在LINUX交换机与服务器上的实现
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
Win11笔记本怎么看电池健康度_Win11电池报告生成命令【详解】
C#如何使用XPathNavigator高效查询XML
如何快速验证Golang安装是否成功_运行go version和hello world示例
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
Windows 10怎么把任务栏放在屏幕上方_Windows 10解锁任务栏并拖动位置
如何使用Golang实现函数指针_函数变量与回调示例
How to Properly Use NumPy in VS Code
Python性能剖析高级教程_cProfileLineProfiler优化案例解析
为什么本地php环境运行php脚本卡顿_php执行效率优化方法与设置【说明】
如何在Golang中处理云原生事件_使用Event和Notification机制
如何使用Golang benchmark测量函数延迟_统计执行耗时
C++如何使用std::optional?(处理可选值)
如何使用Golang反射创建map对象_动态生成键值映射
Mac如何将HEIC图片格式转为JPG_Mac批量转换图片【指南】
Win11声音忽大忽小怎么办 Win11音频增强功能关闭教程【修复】
如何使用Golang管理跨项目依赖_Golang多模块项目依赖实践
Win11怎么关闭任务栏小组件_Windows11隐藏任务栏天气图标
Python高性能计算项目教程_NumPyCythonGPU并行加速
c++中如何使用虚函数实现多态_c++多态性实现原理
如何使用Golang模拟请求超时_Golang context与HTTP请求测试实践
php中作用域操作符能访问私有静态属性吗_访问权限限制【指南】
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
2025-12-05
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。