利用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代码打包为jar软件的简单方法
Aug 04 Python
python结合API实现即时天气信息
Jan 19 Python
分享几道你可能遇到的python面试题
Jul 24 Python
一篇文章快速了解Python的GIL
Jan 12 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
对python程序内存泄漏调试的记录
Jun 11 Python
Django代码性能优化与Pycharm Profile使用详解
Aug 26 Python
简单了解python PEP的一些知识
Jul 13 Python
Python正则表达式急速入门(小结)
Dec 16 Python
详解python 降级到3.6终极解决方案
Feb 06 Python
Keras load_model 导入错误的解决方式
Jun 09 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 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
暴雪前总裁遗憾:没尽早追赶Dota 取消星际争霸幽灵
2020/03/08 星际争霸
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
PHP查询附近的人及其距离的实现方法
2016/05/11 PHP
php使用curl实现ftp文件下载功能
2017/05/16 PHP
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
CSS和Javascript简单复习资料
2010/06/29 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
vue环境搭建简单教程
2017/11/07 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
深入浅析python定时杀进程
2016/06/06 Python
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
Python随机读取文件实现实例
2017/05/25 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
TensorFlow实现模型评估
2018/09/07 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
wxpython多线程防假死与线程间传递消息实例详解
2019/12/13 Python
Pytest mark使用实例及原理解析
2020/02/22 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
倩碧美国官网:Clinique美国
2016/07/20 全球购物
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
麦当劳辞职信范文
2014/01/18 职场文书
软件工程毕业生自荐信
2014/07/04 职场文书
公司表扬信格式
2015/05/04 职场文书
卢旺达饭店观后感
2015/06/05 职场文书