利用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中open函数的使用
Mar 01 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
python清除字符串前后空格函数的方法
Oct 21 Python
python解析含有重复key的json方法
Jan 22 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
python高斯分布概率密度函数的使用详解
Jul 10 Python
Python调用接口合并Excel表代码实例
Mar 31 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 Python
Python爬虫爬取糗事百科段子实例分享
Jul 31 Python
Python通过类的组合模拟街道红绿灯
Sep 16 Python
python playwrigh框架入门安装使用
Jul 23 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 SQL之where语句生成器
2009/03/24 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
2014/10/14 PHP
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
jQuery实现动态添加和删除input框实例代码
2019/03/26 jQuery
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
Python ljust rjust center输出
2008/09/06 Python
Python中使用中文的方法
2011/02/19 Python
Python注释详解
2016/06/01 Python
Python爬虫:通过关键字爬取百度图片
2017/02/17 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
flask入门之表单的实现
2018/07/18 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
python 猴子补丁(monkey patch)
2019/06/26 Python
python实现图片压缩代码实例
2019/08/12 Python
python单例设计模式实现解析
2020/01/07 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
运动会入场式解说词
2014/02/18 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
综合素质评价自我评价
2015/03/06 职场文书
年底个人总结范文
2015/03/10 职场文书
2016情人节宣传语
2015/07/14 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
volatile保证可见性及重排序方法
2022/08/05 Java/Android