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 del()函数用法
Mar 24 Python
python使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
跟老齐学Python之for循环语句
Oct 02 Python
零基础写python爬虫之抓取糗事百科代码分享
Nov 06 Python
使用python实现接口的方法
Jul 07 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
20行python代码的入门级小游戏的详解
May 05 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
python 实现客户端与服务端的通信
Dec 23 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 03 Python
python3实现常见的排序算法(示例代码)
Jul 04 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使用curl模拟登录后采集页面的例子
2013/11/04 PHP
php实现获取及设置用户访问页面语言类
2014/09/24 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
2016/01/09 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
EasyUI实现二级页面的内容勾选的方法
2015/03/01 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
2017/10/25 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python操作MySQL模拟银行转账
2018/03/12 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
python两个list[]相加的实现方法
2020/09/23 Python
农民工工资承诺书范文
2014/03/31 职场文书
工作失职检讨书范文
2015/05/05 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
什么是执行力?9个故事告诉您:成功绝非偶然!
2019/07/05 职场文书
导游词之江南周庄
2019/12/06 职场文书
怎么用Python识别手势数字
2021/06/07 Python
mysql 获取时间方式
2022/03/20 MySQL
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS