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 sys.path详细介绍
Oct 17 Python
Python中字符串的处理技巧分享
Sep 17 Python
python虚拟环境virtualenv的安装与使用
Sep 21 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
解决Spyder中图片显示太小的问题
Apr 27 Python
对python中的xlsxwriter库简单分析
May 04 Python
python入门:这篇文章带你直接学会python
Sep 14 Python
通过python将大量文件按修改时间分类的方法
Oct 17 Python
Python实现八皇后问题示例代码
Dec 09 Python
pygame实现俄罗斯方块游戏(AI篇1)
Oct 29 Python
解决Keras使用GPU资源耗尽的问题
Jun 22 Python
python 基于UDP协议套接字通信的实现
Jan 22 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
php 删除cookie方法详解
2014/12/01 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
php基本函数汇总
2015/07/09 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
CodeIgniter配置之autoload.php自动加载用法分析
2016/01/20 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
event对象获取方法总结在google浏览器下测试
2013/11/03 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
python读取mysql数据绘制条形图
2020/03/25 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
狗狗玩具、零食和咀嚼物的月度送货服务:Super Chewer
2018/08/22 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
高三毕业寄语
2014/04/10 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
自荐信格式模板
2015/03/27 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
感恩父母主题班会
2015/08/12 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS