利用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 相关文章推荐
在Python3中使用asyncio库进行快速数据抓取的教程
Apr 02 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
python: line=f.readlines()消除line中\n的方法
Mar 19 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
Python面向对象程序设计构造函数和析构函数用法分析
Apr 12 Python
Python生成rsa密钥对操作示例
Apr 26 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
Feb 10 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
python3爬虫中引用Queue的实例讲解
Nov 24 Python
Python自动化工具之实现Excel转Markdown表格
Apr 08 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 图片上传类代码
2009/07/17 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
在JS中如何调用JSP中的变量
2014/01/22 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
javaScript封装的各种写法
2017/08/14 Javascript
vue在手机中通过本机IP地址访问webApp的方法
2018/08/15 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
2019/12/10 Javascript
Python中__init__和__new__的区别详解
2014/07/09 Python
Python3实现从文件中读取指定行的方法
2015/05/22 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
2016/12/14 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
django_orm查询性能优化方法
2018/08/20 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
selenium 多窗口切换的实现(windows)
2020/01/18 Python
Python运行异常管理解决方案
2020/03/09 Python
Python多线程正确用法实例解析
2020/05/30 Python
python3访问字典里的值实例方法
2020/11/18 Python
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
荷叶母亲教学反思
2014/04/30 职场文书
购房协议书范本(无房产证)
2014/10/07 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
新娘婚礼致辞
2015/07/27 职场文书
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技