冒泡排序(Bubble Sort): 随机得到一串数字,经过计算后最大的泡泡(数字)应该在上面,最小的泡泡(数字)在最后面
原理:比较像邻的两个数字,将大的数字放在前面,小的数字放在后面
我来打个比方:5个人来举办拳击比赛,这几个人的上场顺序是平均的,无疑肯定是实力最强的是第一名,实力最弱的是最后一名,如果1号上场的就是实力 最强的,那么久意味着这个人肯定就能呆在台下,而最弱的是第一个上场的话,他挑战其他几名选手肯定都是打不过的,所以说他肯定是要在最后的.下面我们开公布赛制规则
选手共有5个人 成龙,李连杰,李小龙,叶问,孙悟空
第一回合
第一场比赛:成龙 VS 李连杰 成龙胜
第二场比赛:李连杰 VS 李小龙 李小龙胜
第三场比赛:李连杰 VS 叶问 叶问胜
第四场比赛:李连杰 VS 孙悟空 孙悟空胜
当前比赛排名: 成龙 > 李小龙 > 叶问 > 孙悟空 >李连杰
第二回合
第一场比赛:成龙 VS 李小龙 李小龙龙胜
第二场比赛:成龙 VS 叶问 叶问胜
第三场比赛:成龙 VS 孙悟空 孙悟空胜
当前比赛排名:李小龙>叶问>孙悟空>成龙>李连杰
这场比赛为什么只打三场呢?因为成龙和李连杰打,李连杰已经输过了啊,嘻嘻
第三回合
第一场比赛:李小龙 VS 叶问 叶问胜
第二场比赛:李小龙 VS 孙悟空 孙悟空胜
当前比赛排名:叶问>孙悟空>李小龙>成龙>李连杰
总决赛:
总决赛:叶问 VS 孙悟空 孙悟空胜(因为孙悟空会72变)
当前比赛排名:孙悟空>叶问>李小龙>成龙>李连杰
下面我们来看代码:
#下面的列表里有遗传随机的数字
l = [3,5,8,4,6]
for c in l:
#这个就是第一次循环,也可以说是第一回合
print(l) #用于打印每次循环的结果
for i in range(0,(len(l)-1)-l.index(c)):
#为什么(len(l)-1)-l.index(c)要这样写呢?
#因为我们在上面的比武大赛中也看到了,如果我们比较一次之后就能确定一个人的名次,所以就少一场比赛,
if l[i] < l[i+1]:
##python中的语法很便捷,比赛制度更加完善,我下面会贴出java中的冒泡排序的代码
l[i], l[i+1] = l[i+1], l[i]
##这个是打印出来的结果
[8, 6, 5, 4, 3]
[8, 6, 5, 4, 3]
[8, 6, 5, 4, 3]
[8, 6, 5, 4, 3]
*
[8, 6, 5, 4, 3]
[8, 6, 5, 4, 3]
[8, 6, 5, 4, 3]
*
[8, 6, 5, 4, 3]
[8, 6, 5, 4, 3]
*
[8, 6, 5, 4, 3]
JAVA的代码展示:
l = [3,5,8,4,6]
for c in l:
for i in range(0,(len(l)-1)-l.index(c)):
if l[i] < l[i+1]:
tepl = l[i]
l[i] = l[i+1]
l[i+1] = tepl
print(l)
##这个思想就是循环得出之后,要创建一个变量,先将输的位置的值放入到变量中,再将赢得值放入到输的位置上,
再将刚刚的变量放入赢得位置
C = A
A = B
B = C
这样A和B的值就交换了