繁体   English   中英

我正在尝试在Python中实现Bubblesort算法,但无法理解为什么它在一种情况下有效而在另一种情况下无效

[英]I'm trying to implement the bubblesort algorithm in Python and can't understand why it works in one case and not another

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变量更改为

length = len(bad_list)

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

如果我真的很傻,我深表歉意,但我感谢您的帮助。

谢谢

您收到错误的原因是:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM