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 15 Python
Python实现的多线程http压力测试代码
Feb 08 Python
python 网络编程详解及简单实例
Apr 25 Python
Python tkinter事件高级用法实例
Jan 31 Python
Python列表(List)知识点总结
Feb 18 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
pycharm内无法import已安装的模块问题解决
Feb 12 Python
python+requests接口自动化框架的实现
Aug 31 Python
Python通过getattr函数获取对象的属性值
Oct 16 Python
Python爬取梨视频的示例
Jan 29 Python
Python如何使用循环结构和分支结构
Apr 13 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
博士208HAF收音机实习报告
2021/03/02 无线电
S900/ ETON E1-XM 收音机
2021/03/02 无线电
php的header和asp中的redirect比较
2006/10/09 PHP
聊天室php&amp;mysql(四)
2006/10/09 PHP
php实现多张图片上传加水印技巧
2013/04/18 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
微信公众号OAuth2.0网页授权问题浅析
2017/01/21 PHP
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
vue.js 中使用(...)运算符报错的解决方法
2018/08/09 Javascript
vue学习笔记之作用域插槽实例分析
2020/02/01 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
2020/10/29 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
[03:11]2014DOTA2国际邀请赛-VG掉入败者组 独家专访357
2014/07/19 DOTA
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
Python中属性和描述符的正确使用
2016/08/23 Python
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
关于Python中空格字符串处理的技巧总结
2017/08/10 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
Python中如何导入类示例详解
2019/04/17 Python
Python如何调用JS文件中的函数
2019/08/16 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
三星英国官网:Samsung英国
2018/09/25 全球购物
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
旅游管理本科生求职信
2013/10/14 职场文书
财会自我鉴定范文
2013/12/27 职场文书
电子商务网站的创业计划书
2014/01/05 职场文书
2014超市双十一活动策划方案
2014/09/29 职场文书