利用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读取注册表中值的方法
Apr 08 Python
详解Python中用于计算指数的exp()方法
May 14 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
Sep 21 Python
django实现用户登陆功能详解
Dec 11 Python
python实现windows下文件备份脚本
May 27 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
Python imutils 填充图片周边为黑色的实现
Jan 19 Python
解决python运行效率不高的问题
Jul 20 Python
python 装饰器重要在哪
Feb 14 Python
Python 用户输入和while循环的操作
May 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可逆加密/解密函数分享
2012/09/25 PHP
php 购物车完整实现代码
2014/06/05 PHP
Laravel框架基于ajax和layer.js实现无刷新删除功能示例
2019/01/17 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
javascript jscroll模拟html元素滚动条
2012/12/18 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
JSON与XML优缺点对比分析
2015/07/17 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
2020/02/24 Javascript
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
用Python实现职工信息管理系统
2020/12/30 Python
大学生实习期自我评价范文
2013/10/03 职场文书
测绘工程专业个人自我评价
2013/12/01 职场文书
业务员岗位职责范本
2013/12/15 职场文书
单位未婚证明范本
2014/01/18 职场文书
社区十八大感言
2014/01/19 职场文书
写给老婆的检讨书
2014/02/21 职场文书
家庭教育的心得体会
2014/09/01 职场文书
预备党员转正材料
2014/12/19 职场文书
团组织推优材料
2014/12/29 职场文书
匿名信格式范文
2015/05/27 职场文书
法定代表人身份证明书
2015/06/18 职场文书
Nginx域名转发使用场景代码实例
2021/03/31 Servers
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis