用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 = ' ')

用python实现冒泡法排序(数字升序)_第1张图片最坏的情况和平均情况需要比较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 = ' ')

用python实现冒泡法排序(数字升序)_第2张图片

你可能感兴趣的:(python)