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 30 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
django中模板的html自动转意方法
May 27 Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
在Mac上删除自己安装的Python方法
Oct 29 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 Python
Python操作注册表详细步骤介绍
Feb 05 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
Python绘图之二维图与三维图详解
Aug 04 Python
Python文件操作及内置函数flush原理解析
Oct 13 Python
pytorch实现ResNet结构的实例代码
May 17 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中模拟POST传递数据的两种方法分享
2011/09/16 PHP
PHP中soap的用法实例
2014/10/24 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
JS预览图像将本地图片显示到浏览器上
2013/08/25 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
js文字横向滚动特效
2015/11/11 Javascript
Jquery调用iframe父页面中的元素及方法
2016/08/23 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
基于jQuery实现文字打印动态效果
2017/04/21 jQuery
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
2017/07/20 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
详解JavaScript的变量
2019/04/04 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
Flutter实现仿微信底部菜单栏功能
2019/09/18 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
在Django下测试与调试REST API的方法详解
2019/08/29 Python
广告业务员岗位职责
2014/02/06 职场文书
会计核算科岗位职责
2014/03/19 职场文书
公司外出活动方案
2014/08/14 职场文书
债务纠纷委托书
2014/08/30 职场文书
2014年教师个人工作总结
2014/11/10 职场文书