冒泡排序

简介:

一、什么是冒泡排序

    冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法

    它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。


二、算法原理

冒泡排序算法的运作如下:(从小到大)

  • 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

  • 针对所有的元素重复以上的步骤,除了最后一个。

  • 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。


三、Python代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import  random
 
def  bubble_sort(array):
     length  =  len (array)
     while  length >  0 :
         for  in  range ( 0 , length - 1 ):
             if  array[i] > array[i + 1 ]:
                 array[i], array[i + 1 =  array[i + 1 ], array[i]
         length  - =  1
     return  array
 
if  __name__  = =  "__main__" :
     array  =  []
     for  in  range ( 20 ):
         array.append(random.randrange( 1000 ))
     print (array)
 
     new_array  =  bubble_sort(array)
     print (new_array)

cfb8bedc93a622362c0b5e36e4a6ffce.png

    相邻元素交互。比如说下标0跟下标1对比,然后下标1和下标2对比,一直到最后一对,这样就把最大值放到了最后,然后数组循环长度减一,就不需要循环已经排序好的最后一个值。就这样不断的循环,排序出剩余数组中最大的值放到最后,直至循环为0。把正确值放在最后,从后往前慢慢生成正确排序,它的时间复杂度是O(n^2)。

本文转自戴柏阳的博客博客51CTO博客,原文链接http://blog.51cto.com/daibaiyang119/1978687如需转载请自行联系原作者


daibaiyang119

相关文章
|
5月前
|
监控 算法 搜索推荐
真题解密:从阿里到腾讯,2026届大厂笔试题库背后的“潜规则”与筛人逻辑
2026届大厂笔试非“考能力”,而是“筛DNA”:阿里重业务落地(如签到积分题考规则理解),腾讯严控代码质量(命名/注释/规范),字节拼手速与取舍,美团考场景设计能力。四家逻辑迥异,精准匹配公司基因。
|
存储 Kubernetes 应用服务中间件
当SRS遇到K8s:快速构建高并发直播集群
流媒体服务和流媒体服务器的关键差异是什么?高效的运维能力是其中极其关键的差异之一,云计算 +Docker+K8s 让开源项目也能拥有这种能力,让每个人都能具备互联网流媒体服务能力,正如:旧时王谢堂前燕,飞入寻常百姓家!
1647 0
当SRS遇到K8s:快速构建高并发直播集群
|
6月前
|
人工智能 Java iOS开发
【IDEA】IntelliJ IDEA 最新、最全快捷键指南(Windows + MacOS 完整版)
本指南整理IntelliJ IDEA 2024.3.7与2025.1.7双版本快捷键,覆盖Windows/macOS双平台,涵盖编辑、导航、调试、重构、Git、AI编码等17大类共300+高频快捷键,并附分层学习建议与2025.3统一版更新说明,助开发者高效进阶。
2586 2
|
数据采集 数据可视化 数据挖掘
基于Python的数据分析与可视化实战
本文将引导读者通过Python进行数据分析和可视化,从基础的数据操作到高级的数据可视化技巧。我们将使用Pandas库处理数据,并利用Matplotlib和Seaborn库创建直观的图表。文章不仅提供代码示例,还将解释每个步骤的重要性和目的,帮助读者理解背后的逻辑。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供有价值的见解和技能。
787 0
|
供应链 数据库连接 PHP
反向海淘商业模式案例:Pandabuy VS Hoobuy VS CSSBUY 无货源淘宝微店代购系统搭建攻略
反向海淘是全球化下新兴的电商模式,满足海外消费者对中国高性价比商品的需求。Pandabuy、Hoobuy 和 CSSBUY 等平台整合供应链和物流资源,实现中国商品高效流通。本文分析这些平台商业模式,提供无货源代购系统搭建攻略及PHP代码示例,涵盖数据库连接、订单处理和商品查询等功能。随着市场需求增长、供应链优势、技术支持和政策利好,反向海淘前景广阔。
|
机器学习/深度学习 算法
《动量法:梯度下降算法的加速引擎》
动量法(Momentum)改进了梯度下降算法收敛慢、易震荡和陷入局部最优等问题。通过引入历史梯度信息,动量法加速了参数更新,使模型在平坦区域也能快速收敛。它平滑了更新方向,减少了高曲率区域的震荡,增强了逃离局部最优的能力。此外,动量法提高了优化效率,减少了迭代次数,并可与其他优化算法结合,进一步提升训练效果。总之,动量法显著改善了梯度下降的性能,成为深度学习中不可或缺的优化技术。
750 2
|
安全 Android开发
游戏封包,你会了吗?
游戏封包,你会了吗?
1611 1
游戏封包,你会了吗?
|
算法 小程序 API
2025年最新蓝牙Beacon技术深度剖析与停车场定位导航实战指南
本文通过分析蓝牙Beacon技术工作原理、停车场定位导航硬件部署、蓝牙信号平滑处理等,旨在剖析蓝牙Beacon技术在停车场定位导航系统中的实际应用与优势,迅速定位空闲车位,提供反向寻车功能,并优化停车场管理流程,有效解决大型停车场中的找车位难题。如需获取详细解决方案可前往文章最下方获取,如有项目需求及技术合作可私信作者。
1383 0
|
传感器
水传感器的技术原理有哪些
水传感器通过多种技术原理检测水质,包括电导率测量、光学感应、化学反应和生物传感等方法,可监测pH值、溶解氧、浊度等参数。
|
关系型数据库 测试技术 分布式数据库