我是靠谱客的博主 标致豆芽,最近开发中收集的这篇文章主要介绍用python实现冒泡法排序(数字升序),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

自己照着书本依葫芦画瓢的,有不对的话请多指正
冒泡法如果有n个元素,则需要执行n-1次扫描
第一次扫描需要进行n-1次比较
假设有5个元素,则共进行 4+3+2+1 = 10 次比较

#-*-coding:GBK-*
num = 0
data = []
while num != -1:
	num = int(input('Please enter a num:n'))
	data.append(num)
data.pop()

print('the original data is ')
for i in range(len(data)):
	print('%d' %data[i], end = ' ')
print()

for i in range(len(data)-1, 0, -1):
	for j in range(i):
		if data[j] > data[j + 1]:    #两个数字进行比较,如果前者大于后者则进行交换
			data[j], data[j+1] = data[j+1], data[j]
	
	print('第 %d 次扫描结果' %(len(data) - i))
	for k in range(len(data)):
		print(data[k], end = ' ')
	print()

print('最终结果')
for m in range(len(data)):
	print(data[m], end = ' ')

执行结果最坏的情况和平均情况需要比较n(n-1) / 2次
如果在某次排序中没有执行交换操作,可以视为排序最终已经完成

#-*-coding:GBK-*
num = 0
data = []
while num != -1:
	num = int(input('Please enter a num:n'))
	data.append(num)
data.pop()

print('the original data is ')
for i in range(len(data)):
	print('%d' %data[i], end = ' ')
print()

def bubble(data):
	for i in range(len(data)-1, 0, -1):
		flag = 0
		for j in range(i):
			if data[j] > data[j + 1]:
				data[j], data[j+1] = data[j+1], data[j]
				flag += 1
		if flag == 0:
			break
		
		print('第 %d 次扫描结果' %(len(data) - i))
		for k in range(len(data)):
			print(data[k], end = ' ')
		print()

bubble(data)

print('最终结果')
for m in range(len(data)):
	print(data[m], end = ' ')

可以看到执行了2次就结束了

最后

以上就是标致豆芽为你收集整理的用python实现冒泡法排序(数字升序)的全部内容,希望文章能够帮你解决用python实现冒泡法排序(数字升序)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部