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 相关文章推荐
Python3字符串学习教程
Aug 20 Python
python生成验证码图片代码分享
Jan 28 Python
python+pygame简单画板实现代码实例
Dec 13 Python
python实战之实现excel读取、统计、写入的示例讲解
May 02 Python
python中的变量如何开辟内存
Jun 26 Python
python实现可逆简单的加密算法
Mar 22 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
Python实现自定义读写分离代码实例
Nov 16 Python
在tensorflow中设置保存checkpoint的最大数量实例
Jan 21 Python
python 实现图像快速替换某种颜色
Jun 04 Python
python根据用户需求输入想爬取的内容及页数爬取图片方法详解
Aug 03 Python
python 将列表里的字典元素合并为一个字典实例
Sep 01 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学习教程之第1天
2008/06/15 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
微信小程序发送订阅消息的方法(php 为例)
2019/10/30 PHP
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
js实现简单的碰壁反弹效果
2016/08/30 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
js学习总结之dom2级事件基础知识详解
2017/07/27 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
2017/09/10 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
2018/09/16 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
Python字符编码判断方法分析
2016/07/01 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
工程师自我评价怎么写
2013/09/19 职场文书
厨房工作人员岗位职责
2013/11/15 职场文书
经典优秀个人求职信分享
2013/12/12 职场文书
考试退步检讨书
2014/01/15 职场文书
淘宝客服自我总结鉴定
2014/01/25 职场文书
保密承诺书
2014/03/27 职场文书
触电现场处置方案
2014/05/14 职场文书
武当山导游词
2015/02/03 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
vue特效之翻牌动画
2022/04/20 Vue.js