利用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函数学习笔记
Oct 07 Python
Python开发的单词频率统计工具wordsworth使用方法
Jun 25 Python
Python实现以时间换空间的缓存替换算法
Feb 19 Python
python3中bytes和string之间的互相转换
Feb 09 Python
python如何对实例属性进行类型检查
Mar 20 Python
python遍历文件夹找出文件夹后缀为py的文件方法
Oct 21 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
python实现简单颜色识别程序
Feb 19 Python
通俗讲解python 装饰器
Sep 07 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
用Python编写简单的gRPC服务的详细过程
Jul 04 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 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模块memcache和memcached区别分析
2011/06/14 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
2014/06/20 PHP
php分页函数完整实例代码
2014/09/22 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
利用canvas实现的加载动画效果实例代码
2017/07/05 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
2020/05/06 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
初步认识Python中的列表与位运算符
2015/10/12 Python
Python Requests库基本用法示例
2018/08/20 Python
python爬取微信公众号文章
2018/08/31 Python
python中import与from方法总结(推荐)
2019/03/21 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
2020/09/01 Python
python利用platform模块获取系统信息
2020/10/09 Python
jupyter 添加不同内核的操作
2021/02/06 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
幼儿园父亲节活动方案
2014/03/11 职场文书
领导干部“四风”查摆问题个人整改措施
2014/10/28 职场文书