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中的闭包
Aug 11 Python
Python遍历目录中的所有文件的方法
Jul 08 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
Mar 15 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
python3.5 email实现发送邮件功能
May 22 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
Python实现使用request模块下载图片demo示例
May 24 Python
python使用多线程编写tcp客户端程序
Sep 02 Python
python实现高斯判别分析算法的例子
Dec 09 Python
python如何求圆的面积
Jul 01 Python
协程Python 中实现多任务耗资源最小的方式
Oct 19 Python
python中numpy.empty()函数实例讲解
Feb 05 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从FLV文件获取视频预览图的方法
2015/03/12 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP基于单例模式实现的数据库操作基类
2016/01/15 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
2014/06/15 Javascript
JavaScript数据类型详解
2015/04/01 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
微信小程序 UI与容器组件总结
2017/02/21 Javascript
微信小程序canvas写字板效果及实例
2017/06/15 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
简单讲解Python中的闭包
2015/08/11 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
Python yield与实现方法代码分析
2018/02/06 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
HTML5在canvas中绘制复杂形状附效果截图
2014/06/23 HTML / CSS
HTML5实现音频和视频嵌入的方法
2018/08/22 HTML / CSS
物流司机岗位职责
2013/12/28 职场文书
管理失职检讨书
2014/02/12 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
《悯农》教学反思
2014/04/28 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
员工安全生产责任书
2014/07/22 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
2014年乡镇人大工作总结
2014/11/25 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
学校捐书倡议书
2015/04/27 职场文书
文案策划岗位个人自我评价(范文)
2019/08/08 职场文书