了解 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.
我真的很困惑这段代码是如何工作的。
假设列表的输入是 [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.