排序算法之冒泡排序法

冒泡排序法



前言

冒泡排序法又称为交换排序法,是从观察水中气泡变化构思而成的,原理是从第一个元素开始,比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较,就是仿佛气泡从水底逐渐升到水面上一样。如此扫描一次之后就可以确保最后一个元素位于正确的顺序。接着逐步进行第二次扫描,直至完成所有元素的排序。


一、冒泡排序的过程

使用数列(57,20,97,82,6)来演示排序的过程。
原始数据排列如下:
原始数据
1、第一次扫描会先拿第一个元素57和第二个元素20进行比较,如果第二个元素小于第一个元素,则进行数据交换;接着拿57和97进行比较,就这样一直比较并且交换,到底4次比较完成后即可确定最大值再数组的最后面,如下图所示:
第一次扫描
2、第二次扫描也是从头比较,但因为最后一个元素在第一次扫描时就已确定是数组中的最大值,所以只需要比较3次即可把剩余数组元素的最大值排到剩余数组的最后面,如下图所示:
第二次扫描
3、第三次扫描只需要比较两次,如下如图所示:
第三次扫描
4、第四次扫描完成所有排序,如图所示:
第四次扫描

二、python实现

1.过程

python范例程序使用冒泡排序法对以下数列进行排序,并逐次排序的过程;

代码如下(示例):

data=[16,25,39,27,12,8,45,63]
datalen = len(data)
print('冒泡排序法:原始数据为:')
for i in range(8):
	print('%3d'%data[i],end='')
print()

#扫描次数
for i in range(datalen-1,-1,-1):
	for j in range(i):
		#第一次扫描中的比较次数
		if data[j]>data[j+1]:
			#比较相邻的两个数,第一个数较大时,交换位置
			data[j],data[j+1] = data[j+1],data[j]
	#把各次扫描后的结果打印出来
	print('第%d次排序后的结果为:'%(datalen-i),end='')
	for j in range(datalen):
		print('%3d'%data[j],end='')
	print()
print('冒泡排序后的结果:')
for j in range(datalen):
	print('%3d'%data[j],end='')
print()

2.结果

结果


参考书本:
吴灿铭,胡昭民,《图解算法使用Python》第2版,清华大学出版社。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值