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中的pprint折腾记
Jan 21 Python
Python实现批量下载文件
May 17 Python
Python编程实现控制cmd命令行显示颜色的方法示例
Aug 14 Python
Python字典数据对象拆分的简单实现方法
Dec 05 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
Python中的上下文管理器相关知识详解
Sep 19 Python
pytorch之添加BN的实现
Jan 06 Python
python如何设置静态变量
Sep 07 Python
python 实现简单的计算器(gui界面)
Nov 11 Python
Selenium浏览器自动化如何上传文件
Apr 06 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
Yii中创建自己的Widget实例
2016/01/05 PHP
Laravel实现表单提交
2017/05/07 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
使用mpvue搭建一个初始小程序及项目配置方法
2018/12/03 Javascript
详解在create-react-app使用less与antd按需加载
2018/12/06 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
python局部赋值的规则
2013/03/07 Python
安装dbus-python的简要教程
2015/05/05 Python
Python的GUI框架PySide的安装配置教程
2016/02/16 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
彪马法国官网:PUMA法国
2019/12/15 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
教育实习生的自我评价分享
2013/11/21 职场文书
会计自荐书
2013/12/02 职场文书
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
商场活动策划方案
2014/01/24 职场文书
人事主管岗位职责
2014/01/30 职场文书
乡镇干部先进性教育活动个人整改措施
2014/09/16 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
小学教学工作总结2015
2015/05/13 职场文书
指导老师鉴定意见
2015/06/05 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS