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聊天程序实例代码分享
Nov 18 Python
实例说明Python中比较运算符的使用
May 13 Python
Python中操作文件之write()方法的使用教程
May 25 Python
Python实现单词翻译功能
Jun 06 Python
scrapy爬虫完整实例
Jan 25 Python
python实现Windows电脑定时关机
Jun 20 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
Jun 03 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
Python Process多进程实现过程
Oct 22 Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 Python
Python vtk读取并显示dicom文件示例
Jan 13 Python
PyQt5 如何让界面和逻辑分离的方法
Mar 24 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
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
yii框架redis结合php实现秒杀效果(实例代码)
2017/10/26 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
jQuery中过滤器的基本用法示例
2017/10/11 jQuery
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
js+html+css实现手动轮播和自动轮播
2020/12/30 Javascript
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
使用Python编写Prometheus监控的方法
2018/10/15 Python
python读取文件指定行内容实例讲解
2020/03/02 Python
通过代码实例了解Python sys模块
2020/09/14 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
养殖项目策划书范文
2014/01/13 职场文书
领导欢送会主持词
2015/07/06 职场文书
关于远足的感想
2015/08/10 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python