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使用PIL缩放网络图片并保存的方法
Apr 24 Python
python+requests+unittest API接口测试实例(详解)
Jun 10 Python
python Spyder界面无法打开的解决方法
Apr 27 Python
python多任务及返回值的处理方法
Jan 22 Python
python 实现矩阵填充0的例子
Nov 29 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 Python
Django ValuesQuerySet转json方式
Mar 16 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
MxNet预训练模型到Pytorch模型的转换方式
May 25 Python
Python sorted对list和dict排序
Jun 09 Python
Python 全局空间和局部空间
Apr 06 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
php部分常见问题总结
2008/03/27 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
jQuery 解析xml文件
2009/08/09 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
jQuery ajax 路由和过滤器使用说明
2011/08/02 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
2012/01/15 Javascript
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
2014/04/30 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
python如何从文件读取数据及解析
2019/09/19 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
selenium与xpath之获取指定位置的元素的实现
2021/01/26 Python
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
联想台湾官网:Lenovo TW
2018/05/09 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
小学安全工作汇报材料
2014/08/19 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
中国式结婚:司仪主持词(范文)
2019/07/25 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
python实现简单的三子棋游戏
2022/04/28 Python