了解 Python 中的冒泡排序

Understanding Bubble Sort in Python

我真的很困惑这段代码是如何工作的。

假设列表的输入是 [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)

输出图片

你的比较

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.