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 07 Python
python主线程捕获子线程的方法
Jun 17 Python
Python定时任务sched模块用法示例
Jul 16 Python
Python发送邮件测试报告操作实例详解
Dec 08 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
Python类super()及私有属性原理解析
Jun 15 Python
Django中F函数的使用示例代码详解
Jul 06 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
如何用Django处理gzip数据流
Jan 29 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的FTP学习(二)
2006/10/09 PHP
php获取mysql版本的几种方法小结
2008/03/25 PHP
PHP自带函数给数字或字符串自动补齐位数
2014/07/29 PHP
php自动给网址加上链接的方法
2015/06/02 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
20个非常棒的 jQuery 幻灯片插件和教程分享
2011/08/23 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
js调用图片隐藏&amp;显示实现代码
2013/09/13 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
python 控制语句
2011/11/03 Python
python在命令行下使用google翻译(带语音)
2014/01/16 Python
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
Linux下远程连接Jupyter+pyspark部署教程
2019/06/21 Python
Python使用python-docx读写word文档
2019/08/26 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
TensorFlow索引与切片的实现方法
2019/11/20 Python
Python内存映射文件读写方式
2020/04/24 Python
美国性感女装网站:bebe
2017/03/04 全球购物
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
大学生预备党员自我评价分享
2013/11/16 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
工伤赔偿协议书
2014/04/15 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
小学数学教学随笔
2015/08/14 职场文书
Java中Dijkstra(迪杰斯特拉)算法
2022/05/20 Java/Android