利用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实现html转ubb代码(html2ubb)
Jul 03 Python
Python实现字典的key和values的交换
Aug 04 Python
Python字符串、元组、列表、字典互相转换的方法
Jan 23 Python
python判断字符串编码的简单实现方法(使用chardet)
Jul 01 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
Sanic框架蓝图用法实例分析
Jul 17 Python
python抖音表白程序源代码
Apr 07 Python
python ftplib模块使用代码实例
Dec 31 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
通过代码实例了解Python sys模块
Sep 14 Python
Python基于Opencv识别两张相似图片
Apr 25 Python
LyScript实现绕过反调试保护的示例详解
Aug 14 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
Terran热键控制
2020/03/14 星际争霸
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
JS 用6N±1法求素数 实例教程
2009/10/20 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
Python操作Access数据库基本步骤分析
2016/09/19 Python
对Python3中的input函数详解
2018/04/22 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
聊聊python里如何用Borg pattern实现的单例模式
2019/06/06 Python
PyQt5创建一个新窗口的实例
2019/06/20 Python
pandas的排序和排名的具体使用
2019/07/31 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
美国第二大团购网站:LivingSocial
2016/07/24 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
如何利用find命令查找文件
2015/02/07 面试题
自考毕业自我鉴定
2014/03/18 职场文书
老兵退伍标语
2014/10/07 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
美术教师个人总结
2015/02/06 职场文书
广播体操比赛主持词
2015/06/29 职场文书
运动会入场词
2015/07/18 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
python 模块重载的五种方法
2021/04/24 Python
DSP接收机前端设想
2022/04/05 无线电