利用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格式化字符串实例总结
Sep 28 Python
Python实现简单状态框架的方法
Mar 19 Python
Python高斯消除矩阵
Jan 02 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
Jun 27 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
python实现高斯(Gauss)迭代法的例子
Nov 20 Python
基于python纯函数实现井字棋游戏
May 27 Python
基于Python爬取fofa网页端数据过程解析
Jul 13 Python
Python+kivy BoxLayout布局示例代码详解
Dec 28 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
python 如何用urllib与服务端交互(发送和接收数据)
Mar 04 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
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
php基于curl实现随机ip地址抓取内容的方法
2016/10/11 PHP
PHP进程通信基础之信号
2017/02/19 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
php session_decode函数用法讲解
2019/05/26 PHP
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
Jquery创建层显示标题和内容且随鼠标移动而移动
2014/01/26 Javascript
node.js中的path.resolve方法使用说明
2014/12/08 Javascript
javascript验证邮件地址和MX记录的方法
2015/06/16 Javascript
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
原生js实现jquery函数animate()动画效果的简单实例
2016/08/21 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
js校验开始时间和结束时间
2020/05/26 Javascript
python基础教程之元组操作使用详解
2014/03/25 Python
浅谈scrapy 的基本命令介绍
2017/06/13 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
Python根据服务获取端口号的方法
2019/09/25 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
Python如何批量生成和调用变量
2020/11/21 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
代理协议书
2014/04/22 职场文书
高考标语大全
2014/06/05 职场文书
校园学雷锋广播稿
2014/10/08 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby
Win11 BitLocker 驱动器加密
2022/04/19 数码科技
sql注入报错之注入原理实例解析
2022/06/10 MySQL