根据教程自学Python时发现
无错误
l = [6, 5, 4, 3, 2, 1]
for i in range(1, len(l)): # 1,5 #循环4大次 4
for j in range(len(l) - i):
if l[j] > l[j + 1]:
l[j], l[j + 1] = l[j + 1], l[j]
print(l)
教程中说是排序1,2,3,4,5,但冒泡排序会不可避免地多添加一个元素吗?
[1, 2, 3, 4, 5, 6]
我还另外写过一个简单的理解冒泡排序的过程,请问是这种原理吗?
a = [6,4,2,5,3,1]
if a[0] > a[1]:
a[0],a[1] = a[1],a[0]
if a[1] > a[2]:
a[1],a[2] = a[2],a[1]
if a[2] > a[3]:
a[2],a[3] = a[3],a[2]
if a[3] > a[4]:
a[3],a[4] = a[4],a[3]
if a[4] > a[5]:
a[4],a[5] = a[5],a[4]
if a[0] > a[1]:
a[0],a[1] = a[1],a[0]
if a[1] > a[2]:
a[1],a[2] = a[2],a[1]
if a[2] > a[3]:
a[2],a[3] = a[3],a[2]
if a[3] > a[4]:
a[3],a[4] = a[4],a[3]
if a[4] > a[5]:
a[4],a[5] = a[5],a[4]
if a[0] > a[1]:
a[0],a[1] = a[1],a[0]
if a[1] > a[2]:
a[1],a[2] = a[2],a[1]
if a[2] > a[3]:
a[2],a[3] = a[3],a[2]
if a[3] > a[4]:
a[3],a[4] = a[4],a[3]
if a[4] > a[5]:
a[4],a[5] = a[5],a[4]
if a[0] > a[1]:
a[0],a[1] = a[1],a[0]
if a[1] > a[2]:
a[1],a[2] = a[2],a[1]
if a[2] > a[3]:
a[2],a[3] = a[3],a[2]
if a[3] > a[4]:
a[3],a[4] = a[4],a[3]
if a[4] > a[5]:
a[4],a[5] = a[5],a[4]
if a[0] > a[1]:
a[0],a[1] = a[1],a[0]
if a[1] > a[2]:
a[1],a[2] = a[2],a[1]
if a[2] > a[3]:
a[2],a[3] = a[3],a[2]
if a[3] > a[4]:
a[3],a[4] = a[4],a[3]
if a[4] > a[5]:
a[4],a[5] = a[5],a[4]
print(a)
我希望有人能跟我说一下冒泡排序两个for in循环的原理,感谢解答
回答:你那个数组里面就是1到6啊,排序出来不是正确的吗。如果你想输出1到5,那你就把原来的数组变一下。然后你下面模拟的那个步骤是正确的,就是有一些重复的步骤,在第一次比较了a4和a5之后,a5已经是最大的了,后面就可以不用再比较a4和a5了。这个在你上面的代码写的倒是正确的