利用python实现冒泡排序算法实例代码


Posted in Python onDecember 01, 2019

冒泡排序

冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

冒泡排序算法的运作如下:

1、比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

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

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

冒泡排序,一个经典的排序算法,因在算法运行中,极值会像水底的气泡一样逐渐冒出来,因此而得名。

冒泡排序的过程是比较两个相邻元素的大小,然后根据大小交换位置,这样从列表左端开始冒泡,最后最大值会依次从右端冒出。 

利用python实现冒泡排序算法实例代码

python实现冒泡排序:

def bubble_sort(nums):

 for i in range(len(nums) - 1):

  for j in range(len(nums) - i - 1):

   if nums[j] > nums[j + 1]:

    nums[j], nums[j + 1] = nums[j + 1], nums[j]

 return nums

python实现冒泡排序的核心思想是通过从列表一端迭代循环元素,再通过一个循环让这个元素之后的元素相邻两个比较,从而依次将最大值移动到最末端,如下图示意。

利用python实现冒泡排序算法实例代码

本想放gif图的,放不上有点问题。

关于冒泡排序的时间复杂度,在上面python实现的代码中时间复杂度是n的平方,当然可以再考虑一下极端的情况:当队列已经从小到大排好序或者从大到小排好序,从小到大排好顺序时可以只扫描一遍就结束排序,此时时间复杂度为O(n),如果是从大到小,那么就需要扫描n-1次,同时需要比较交换n-1次,时间复杂度为n的平方 。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python使用threading获取线程函数返回值的实现方法
Nov 15 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
May 08 Python
Python中fnmatch模块的使用详情
Nov 30 Python
Python实现的特征提取操作示例
Dec 03 Python
python 输出所有大小写字母的方法
Jan 02 Python
pyqt 实现为长内容添加滑轮 scrollArea
Jun 19 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
基于python实现上传文件到OSS代码实例
May 09 Python
Python3爬虫中Ajax的用法
Jul 10 Python
详解Python为什么不用设计模式
Jun 24 Python
Python函数的默认参数设计示例详解
Dec 01 #Python
python线程定时器Timer实现原理解析
Nov 30 #Python
python线程信号量semaphore使用解析
Nov 30 #Python
Python一行代码解决矩阵旋转的问题
Nov 30 #Python
Numpy之将矩阵拉成向量的实例
Nov 30 #Python
numpy np.newaxis 的实用分享
Nov 30 #Python
Python如何使用函数做字典的值
Nov 30 #Python
You might like
解析VS2010利用VS.PHP插件调试PHP的方法
2013/07/19 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
JS框架之vue.js(深入三:组件1)
2016/09/29 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
2018/08/07 Javascript
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
Django自定义manage命令实例代码
2018/02/11 Python
python 对象和json互相转换方法
2018/03/22 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
如何手工释放资源
2013/12/15 面试题
毕业生就业自荐书
2013/12/15 职场文书
毕业生工作求职信
2014/06/30 职场文书
联谊活动总结
2014/08/28 职场文书
教师群众路线教育实践活动学习笔记
2014/11/05 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书
mysql如何配置白名单访问
2021/06/30 MySQL
css3带你实现3D转换效果
2022/02/24 HTML / CSS
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android