python如何进行冒泡排序


冒泡排序是通过重复遍历列表、比较相邻元素并交换使较大(或较小)元素逐步“冒泡”至一端的排序算法;Python实现中,外层控制轮数,内层两两比较交换,可用flag优化提前终止。

冒泡排序是一种基础的排序算法,原理简单:重复遍历列表,比较相邻元素,把较大的(或较小的)逐个“冒泡”到一端。Python 实现起来很直观,适合理解排序逻辑。

基本实现(升序)

核心思路:每轮遍历把当前未排序部分的最大值移到末尾。

说明:外层循环控制轮数(最多 n-1 轮),内层循环负责两两比较和交换;每轮结束后,末尾元素就已就位,所以下一轮范围可缩小。

建议写法:

  • len(arr) - 1 - i 控制内层边界,避免重复比较已排好的末尾元素
  • 加入 flag 优化:若某轮没发生交换,说明已有序,可提前退出

示例代码:

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] 即可,其余逻辑完全不变。

注意:原地排序 vs 返回新列表

上面的实现是原地修改输入列表。如果想保留原列表不变,可以先复制一份:

  • arr.copy()arr[:] 创建副本再排序
  • 不推荐直接返回 sorted(arr)——那用的是Timsort,不是冒泡

基本上就这些。冒泡排序时间复杂度是 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

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.