理解Python中的冒泡排序

时间:2016-11-06 02:28:22

标签: python python-3.x bubble-sort

我对此代码的工作方式感到困惑。

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

输出图片 Picture of the output

1 个答案:

答案 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