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 中文字符串的处理实现代码
Oct 25 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
python排序方法实例分析
Apr 30 Python
Python实现读取并保存文件的类
May 11 Python
rabbitmq(中间消息代理)在python中的使用详解
Dec 14 Python
python使用tornado实现简单爬虫
Jul 28 Python
Python socket实现的简单通信功能示例
Aug 21 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
使用Pycharm分段执行代码
Apr 15 Python
Python如何安装第三方模块
May 28 Python
python中什么是面向对象
Jun 11 Python
通过cmd进入python的步骤
Jun 16 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递归创建和删除文件夹的代码小结
2012/04/13 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
基于jquery的多功能软键盘插件
2012/07/25 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
解决vue中对象属性改变视图不更新的问题
2018/02/23 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
详解python里的命名规范
2018/07/16 Python
Python生成器generator用法示例
2018/08/10 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
使用python+poco+夜神模拟器进行自动化测试实例
2020/04/23 Python
Python-split()函数实例用法讲解
2020/12/18 Python
css sprite简单实例
2016/05/23 HTML / CSS
详解webapp页面滚动卡顿的解决办法
2018/12/26 HTML / CSS
美国战术品牌:5.11 Tactical
2019/05/01 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
一些Solaris面试题
2013/03/22 面试题
读书活动总结
2014/04/28 职场文书
应届生求职信范文
2014/06/30 职场文书
客户答谢会活动方案
2014/08/31 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
工作批评与自我批评范文
2014/10/16 职场文书
2014年除四害工作总结
2014/12/06 职场文书
2014年党总支工作总结
2014/12/18 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
Java Socket实现多人聊天系统
2021/07/15 Java/Android
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle