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 encode和decode的妙用
Sep 02 Python
详尽讲述用Python的Django框架测试驱动开发的教程
Apr 22 Python
python和flask中返回JSON数据的方法
Mar 26 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
Python基础学习之函数方法实例详解
Jun 18 Python
详解用python生成随机数的几种方法
Aug 04 Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 Python
Python list与NumPy array 区分详解
Nov 06 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
python TCP包注入方式
May 05 Python
python批量修改文件名的示例
Sep 27 Python
基于PyQt5制作一个群发邮件工具
Apr 08 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无限分类(树形类)
2013/09/28 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
javascript的内存管理详解
2013/08/07 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
jQuery实现企业网站横幅焦点图切换功能实例
2015/04/30 Javascript
js选择器全面解析
2016/06/27 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
Bootstrap中定制LESS-颜色及导航条(推荐)
2016/11/21 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
2017/11/03 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
发布Angular应用至生产环境的方法
2018/12/10 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
python函数返回多个值的示例方法
2013/12/04 Python
python使用代理ip访问网站的实例
2018/05/07 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
Python对列表的操作知识点详解
2019/08/20 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
Python2与Python3的区别详解
2020/02/09 Python
pytorch实现查看当前学习率
2020/06/24 Python
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
《最可爱的人》教学反思
2014/02/14 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
爱与责任演讲稿
2014/05/20 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS