自己照着书本依葫芦画瓢的,有不对的话请多指正
冒泡法如果有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 = ' ')