Python实现冒泡排序算法的完整实例


Posted in Python onNovember 04, 2020

冒泡排序:顾名思义就是(较小的值)像泡泡一样往上冒,(大的值)往下沉。

实现原理:依次将相邻两个数值进行比较,较小的数值移到左边,较大的数值移到右边,依次比较完第一轮后,最大的数值应该排在最右边。然后再继续重复的比较,直至无数值需要交换,此时排序完成。

例子解释:

无序列表arr = [7,6,5,3,9,2,8,1,4]

数列长度:len = 9

第一趟排序:

i = 1;

arr = [7,6,5,3,9,2,8,1,4]

  1. 7>6 =>[6,7,5,3,9,2,8,1,4]数值小的放左边,数值打的放右边
  2. 7>5 =>[6,5,7,3,9,2,8,1,4]
  3. 7>3 =>[6,5,3,7,9,2,8,1,4]
  4. 7<9 =>[6,5,3,7,9,2,8,1,4]
  5. 9>2 =>[6,5,3,7,2,9,8,1,4]
  6. 9>8 =>[6,5,3,7,2,8,9,1,4]
  7. 9>1 =>[6,5,3,7,2,8,1,9,4]
  8. 9>4 =>[6,5,3,7,2,8,1,4,9]

第一趟进行了8次交换,即子循环比较的次数为j=len-i=9-1=8

至此第一趟冒泡已完成,最大数值9已经排到最右边。

第二趟排序:

i = 2

arr = [6,5,3,7,2,8,1,4,9]

  1. 6>5 => [5,6,3,7,2,8,1,4,9]
  2. 6>3 => [5,3,6,7,2,8,1,4,9]
  3. 6<7 =>[5,3,6,7,2,8,1,4,9]
  4. 7>2 =>[5,3,6,2,7,8,1,4,9]
  5. 7<8 =>[5,3,6,2,7,8,1,4,9]
  6. 8>1 =>[5,3,6,2,7,1,8,4,9]
  7. 8>4 =>[5,3,6,2,7,1,4,8,9]

第二趟进行了7次交换,即子循环比较的次数为j=len-i=9-2=7

至此第二趟冒泡已完成,arr = [5,3,6,2,7,1,4,8,9]。

。。。

接下来也是如此依次比较排序,直至数组arr = [1,2,3,4,5,6,7,8,9]

总共进行了8趟排序;

Python代码实现:

def bubbleSort(arr):
	# 获取数组长度
	arr_len = len(arr)
 # 外部大循环=》第几趟
	for i in range(1, arr_len):
		# 内部循环比较=》相邻数值进行比较
		for j in range(0, arr_len - i):# 每次内循环的次数都需要总长度减去已排好位置的值的数量
			if arr[j] > arr[j+1]: # 左右比较
				arr[j], arr[j+1] = arr[j+1], arr[j] # 将数值大的放右边,数值小的放左边


arr = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(arr)
print('排序后:')
for i in range(len(arr)):
	print('%d'%arr[i], end=' ')

总结

到此这篇关于Python实现冒泡排序算法的文章就介绍到这了,更多相关Python实现冒泡排序算法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现目录树生成示例
Mar 28 Python
Python中的rfind()方法使用详解
May 19 Python
举例区分Python中的浅复制与深复制
Jul 02 Python
python+opencv实现阈值分割
Dec 26 Python
python实现词法分析器
Jan 31 Python
Python3.6.x中内置函数总结及讲解
Feb 22 Python
Python vtk读取并显示dicom文件示例
Jan 13 Python
Python3.6 中的pyinstaller安装和使用教程
Mar 16 Python
Python绘制全球疫情变化地图的实例代码
Apr 20 Python
Python使用matplotlib绘制圆形代码实例
May 27 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
python中的装饰器该如何使用
Jun 18 Python
Lombok插件安装(IDEA)及配置jar包使用详解
Nov 04 #Python
基于OpenCV的路面质量检测的实现
Nov 04 #Python
Pycharm同步远程服务器调试的方法步骤
Nov 04 #Python
python归并排序算法过程实例讲解
Nov 04 #Python
Numpy数组的广播机制的实现
Nov 03 #Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 #Python
Python os库常用操作代码汇总
Nov 03 #Python
You might like
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
JavaScript prototype对象的属性说明
2010/03/13 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
JS往数组中添加项性能分析
2015/02/25 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
分享一个常用的Python模拟登陆类
2015/03/29 Python
python传递参数方式小结
2015/04/17 Python
Python3.6中Twisted模块安装的问题与解决
2019/04/15 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
Python xlwt模块使用代码实例
2020/06/10 Python
5分钟快速掌握Python定时任务框架的实现
2021/01/26 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
CSS3条纹背景制作的实战攻略
2016/05/31 HTML / CSS
手把手教你实现一个canvas智绘画板的方法
2019/03/04 HTML / CSS
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
中式面点餐厅创业计划书
2014/01/29 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
新生入学欢迎词
2015/01/26 职场文书
高中教师个人总结
2015/02/10 职场文书