利用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实现的系统实用log类实例
Jun 30 Python
详解Python的collections模块中的deque双端队列结构
Jul 07 Python
解决python2.7 查询mysql时出现中文乱码
Oct 09 Python
深入理解Python中range和xrange的区别
Nov 26 Python
Python读取数据集并消除数据中的空行方法
Jul 12 Python
基于python实现学生管理系统
Oct 17 Python
Python Numpy库安装与基本操作示例
Jan 08 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
Atom Python 配置Python3 解释器的方法
Aug 28 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
Jan 06 Python
Python交互环境下打印和输入函数的实例内容
Feb 16 Python
python查询MySQL将数据写入Excel
Oct 29 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
用php来检测proxy
2006/10/09 PHP
phpfans留言版用到的数据操作类和分页类
2007/01/04 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
js下载文件并修改文件名
2017/05/08 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
Vue Element校验validate的实例
2020/09/21 Javascript
Python学习笔记之os模块使用总结
2014/11/03 Python
python比较两个列表大小的方法
2015/07/11 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
浅谈Python编程中3个常用的数据结构和算法
2019/04/30 Python
Python IDE环境之 新版Pycharm安装详细教程
2020/03/05 Python
PyQt使用QPropertyAnimation开发简单动画
2020/04/02 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
请说出几个常用的异常类
2013/01/08 面试题
新员工入职感言
2014/02/01 职场文书
采购主管岗位职责
2014/02/01 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
预备党员转正思想汇报
2014/09/26 职场文书
简历自我评价优缺点
2015/03/11 职场文书
稽核岗位职责范本
2015/04/13 职场文书
幼儿园重阳节活动总结
2015/05/05 职场文书
毕业论文致谢信
2015/05/14 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android