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的一些用法分享
Oct 07 Python
Python中set与frozenset方法和区别详解
May 23 Python
python dict.get()和dict['key']的区别详解
Jun 30 Python
python一键升级所有pip package的方法
Jan 16 Python
Python用threading实现多线程详解
Feb 03 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
python实现飞机大战微信小游戏
Mar 21 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
Django实现随机图形验证码的示例
Oct 15 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 29 Python
只用40行Python代码就能写出pdf转word小工具
May 31 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 cli 小技巧
2013/06/03 PHP
Zend Framework教程之Zend_Layout布局助手详解
2016/03/04 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
情人节之礼 js项链效果
2012/02/13 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
JS验证码实现代码
2017/09/14 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
Element Carousel 走马灯的具体实现
2020/07/26 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
vue+Element-ui实现登录注册表单
2020/11/17 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
Python3基础之函数用法
2014/08/13 Python
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
详解python 爬取12306验证码
2019/05/10 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
python 5个实用的技巧
2020/09/27 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
英国电子产品购物网站:TobyDeals
2018/07/30 全球购物
教师敬业奉献模范事迹材料
2014/05/18 职场文书
护士业务学习心得体会
2016/01/25 职场文书
《司马光》教学反思
2016/02/22 职场文书
HAM-2000摩机图
2021/04/22 无线电
Python一行代码实现自动发邮件功能
2021/05/30 Python
pytorch中的 .view()函数的用法介绍
2022/03/17 Python