我正在尝试在Python中实现bubblesort算法,并且无法理解为什么它在一个案例中工作而不是另一个案例

时间:2015-01-20 16:54:15

标签: python algorithm

my_list = [1,33,2,3,11,7,9,7,8]

def bubble(bad_list):
    sorted = False
    length = len(bad_list)-1

    while not sorted:
        sorted = True
        for i in range(length):
            if bad_list[i] > bad_list[i+1]:
                sorted = False
                bad_list[i], bad_list[i+1] = bad_list[i+1], bad_list[i]

    return bad_list

bubble(my_list)
print my_list

好的,这是我的代码工作正常,但是如果我将长度变量更改为

length = len(bad_list)

然后我得到一个错误,说列表索引超出范围,为什么?

如果我真的很蠢,我道歉,但我很感激帮助。

由于

1 个答案:

答案 0 :(得分:1)

您收到错误,因为您有:

if bad_list[i] > bad_list[i+1]:
    ...

如果ilen(lst)(最后一次通过for循环),则i+1超出了列表范围。