我对此代码的工作方式感到困惑。
假设列表的输入是[C,B,A,exit]。
在第一个“for”语句中,它将交换列表位置0和1,即C和B.
这会产生一个带有[B,C,A]
的新列表但是,为什么在第二组“for”语句中,它会在A和B之间交换而不是C和A?这可以在照片中看到,输出显示它将交换B和A.我很困惑,为什么它应该这样做时应该使用列表的位置1和2。
我尝试过手动跟踪代码,我总是得到C和A应该交换。有人可以帮我解释一下吗?非常感谢您提前
def bubble(alist):
count = 0
count2 = 0
for length in range(len(list)):
for i in range(len(list) - 1):
if list[i] > list[i + 1]:
print("Swapping", list[i + 1], list[length])
tmp = list[length]
list[length] = list[i+1]
list[i + 1] = tmp
list = []
while True:
val = input()
if val == "exit":
break
list.append(val)
counts = bubble(list)
print(list)
输出图片
答案 0 :(得分:0)
您的比较
if list[i] > list[i + 1]:
与您的交换代码不匹配
tmp = list[length]
list[length] = list[i+1]
list[i + 1] = tmp
将您的比较改为
if list[i + 1] > list[length]
或将您的交换代码更改为
tmp = list[i + 1]
list[i + 1] = list[i]
list[i] = tmp
此外,您绝不应该使用list
作为变量名称,因为它是built-in type。