不再慌乱!Python冒泡算法帮你快速整理数据

不再慌乱!Python冒泡算法帮你快速整理数据

冒泡算法大揭秘:教你用Python轻松排序数据

冒泡排序是一种简单但低效的排序算法,它通过多次遍历要排序的元素,依次比较相邻的两个元素,如果它们的顺序不正确就交换它们,直到没有再需要交换的元素为止.冒泡排序的特点是每一轮排序都会将当前未排序部分中最大(或最小)的元素移动到正确的位置.

下面是冒泡排序的示例过程:

- 假设我们有一个包含6个元素的数组 [5, 3, 8, 2, 1, 4] 进行升序排序. 第一轮排序: • 比较第1和第2个元素: 3 < 5,保持原序 • 比较第2和第3个元素: 3 < 8,保持原序 • 比较第3和第4个元素: 2 < 8,保持原序 • 比较第4和第5个元素: 1 < 8,保持原序 • 比较第5和第6个元素: 4 < 8,保持原序 数组变为 [3, 5, 2, 1, 4, 8] 第二轮排序: • 比较第1和第2个元素: 3 < 5,保持原序 • 比较第2和第3个元素: 2 < 5,保持原序 • 比较第3和第4个元素: 1 < 5,保持原序 • 比较第4和第5个元素: 4 < 5,保持原序 数组变为 [3, 2, 1, 4, 5, 8] 第三轮排序: • 比较第1和第2个元素: 2 < 3,保持原序 • 比较第2和第3个元素: 1 < 3,保持原序 • 比较第3和第4个元素: 3 < 4,保持原序 数组变为 [2, 1, 3, 4, 5, 8] 

重复这个过程直到整个数组排序完成.

def bubble_sort(arr):     n = len(arr)     for i in range(n):         # 标记是否发生交换         swapped = False         for j in range(0, n-i-1):             if arr[j] > arr[j+1]:                 arr[j], arr[j+1] = arr[j+1], arr[j]                 swapped = True         # 如果本轮没有发生交换,说明数组已经有序         if not swapped:             break         print(f"第{i+1}轮排序: {arr}") # 初始数组 arr = [5, 3, 8, 2, 1, 4] print("初始数组:", arr) bubble_sort(arr) print("已排序数组:", arr) 

输出:

初始数组: [5, 3, 8, 2, 1, 4] 第1轮排序: [3, 5, 2, 1, 4, 8] 第2轮排序: [3, 2, 5, 1, 4, 8] 第3轮排序: [3, 2, 1, 5, 4, 8] 第4轮排序: [3, 2, 1, 4, 5, 8] 第5轮排序: [2, 3, 1, 4, 5, 8] 第6轮排序: [2, 1, 3, 4, 5, 8] 第7轮排序: [2, 1, 3, 4, 5, 8] 第8轮排序: [1, 2, 3, 4, 5, 8] 第9轮排序: [1, 2, 3, 4, 5, 8] 已排序数组: [1, 2, 3, 4, 5, 8] 

冒泡排序的基本思路有那些:

通过多次遍历待排序的元素列表,比较相邻的元素并根据需要交换它们的位置,直到整个列表排好序为止.除了这种最基本的实现方式外,还有一些优化和变种方法可以改进冒泡排序的性能:

标记交换:如果在某一轮遍历中没有进行过任何元素位置的交换,说明整个数组已经有序,可以提前结束排序过程.

改进的冒泡排序:通常情况下,冒泡排序会将每轮遍历时剩余未排序部分的所有元素都进行比较.但实际上,每一轮排序其实只需比较到未排序部分中最后一次发生交换的位置即可,因为该位置之后的元素已经有序.

鸡尾酒排序(双向冒泡排序): 鸡尾酒排序是冒泡排序的一种变体,它来回地在待排序元素中进行冒泡操作.这样可以在某些情况下更快地找到最大和最小值,并将它们放到正确的位置上.

逆序对的利用: 如果待排序的元素中包含逆序对数量的统计信息,可以利用逆序对的数量判断数组是否已经有序,从而减少不必要的比较.

冒泡排序的时间复杂度为O(n^2),其中n是要排序元素的数量.虽然冒泡排序简单易懂,但对于大型数据集并不高效,因此在实际应用中很少使用.

感谢大家的关注和支持!想了解更多Python编程精彩知识内容,请关注我的   微信公众号:python小胡子,有最新最前沿的的python知识和人工智能AI与大家共享,同时,如果你觉得这篇文章对你有帮助,不妨点个赞,并点击关注.动动你发财的手,万分感谢!!!

Read more

最新电子电气架构(EEA)调研-3

而新一代的强实时性、高确定性,以及满足CAP定理的同步分布式协同技术(SDCT),可以实现替代TSN、DDS的应用,且此技术已经在无人车辆得到验证,同时其低成本学习曲线、无复杂二次开发工作,将开发人员的劳动强度、学习曲线极大降低,使开发人员更多的去完成算法、执行器功能完善。 五、各大车厂的EEA 我们调研策略是从公开信息中获得各大车厂的EEA信息,并在如下中进行展示。 我们集中了华为、特斯拉、大众、蔚来、小鹏、理想、东风(岚图)等有代表领先性的车辆电子电气架构厂商。        1、华为 图12 华为的CCA电子电气架构              (1)华为“计算+通信”CC架构的三个平台                         1)MDC智能驾驶平台;                         2)CDC智能座舱平台                         3)VDC整车控制平台。        联接指的是华为智能网联解决方案,解决车内、车外网络高速连接问题,云服务则是基于云计算提供的服务,如在线车主服务、娱乐和OTA等。 华

By Ne0inhk
Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践

Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 文章目录 * Apache IoTDB 架构特性与 Prometheus+Grafana 监控体系部署实践 * Apache IoTDB 核心特性与价值 * Apache IoTDB 监控面板完整部署方案 * 安装步骤 * 步骤一:IoTDB开启监控指标采集 * 步骤二:安装、配置Prometheus * 步骤三:安装grafana并配置数据源 * 步骤四:导入IoTDB Grafana看板 * TimechoDB(基于 Apache IoTDB)增强特性 * 总结与应用场景建议 Apache IoTDB 核心特性与价值 Apache IoTDB 专为物联网场景打造的高性能轻量级时序数据库,以 “设备 - 测点” 原生数据模型贴合物理设备与传感器关系,通过高压缩算法、百万级并发写入能力和毫秒级查询响应优化海量时序数据存储成本与处理效率,同时支持边缘轻量部署、

By Ne0inhk
SQL Server 2019安装教程(超详细图文)

SQL Server 2019安装教程(超详细图文)

SQL Server 介绍) SQL Server 是由 微软(Microsoft) 开发的一款 关系型数据库管理系统(RDBMS),支持结构化查询语言(SQL)进行数据存储、管理和分析。自1989年首次发布以来,SQL Server 已成为企业级数据管理的核心解决方案,广泛应用于金融、电商、ERP、CRM 等业务系统。它提供高可用性、安全性、事务处理(ACID)和商业智能(BI)支持,并支持 Windows 和 Linux 跨平台部署。 一、获取 SQL Server 2019 安装包 1. 官方下载方式 前往微软官网注册账号后,即可下载 SQL Server Developer 版本(

By Ne0inhk