利用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选择排序算法实例总结
Jul 01 Python
python logging日志模块的详解
Oct 29 Python
Django权限机制实现代码详解
Feb 05 Python
python复制文件到指定目录的实例
Apr 27 Python
python检索特定内容的文本文件实例
Jun 05 Python
python中将正则过滤的内容输出写入到文件中的实例
Oct 21 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
python opencv判断图像是否为空的实例
Jan 26 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
Python从列表推导到zip()函数的5种技巧总结
Oct 23 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
Python爬虫之爬取最新更新的小说网站
May 06 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常量的详解
2013/06/09 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
详解PHP swoole process的使用方法
2017/08/26 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
javascript iframe编程相关代码
2009/12/28 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
解决jquery1.9不支持browser对象的问题
2013/11/13 Javascript
js 通用订单代码
2013/12/23 Javascript
jquery实现的蓝色二级导航条效果代码
2015/08/24 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
javascript 网页进度条简单实例
2017/02/22 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
酒店总经理职务说明书
2014/02/26 职场文书
房屋租赁意向书
2014/04/01 职场文书
机关出纳岗位职责
2014/04/03 职场文书
毕业评语大全
2014/05/04 职场文书
企业法人授权委托书
2014/09/25 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
农业生产宣传标语
2014/10/08 职场文书
大学校园招聘会感想
2015/08/10 职场文书
Nginx 常用配置
2022/05/15 Servers