Python冒泡排序出现List index out of range错误求助
解决冒泡排序的“List index out of range”错误
嘿,我来帮你搞定这个冒泡排序的索引越界问题!咱们一步步拆解问题:
错误的直接原因
你遇到的List index out of range错误,核心问题出在循环条件和数组索引的匹配上:
- Python数组的索引是从0开始的,假设数组长度是
b,那么最大有效索引是b-1 - 你的内层循环条件是
while n < b,这意味着n会取到b-1这个值,此时n+1就等于b,而array[b]是不存在的,直接触发索引越界
还有这些小问题需要修正
除了索引越界,代码里还有几个影响功能的细节:
- 缺失函数定义:你调用了
bubblesort(array),但没有定义这个函数,得补上def bubblesort(array): - 初始索引错误:你把
n初始设为1,会跳过数组第一个元素(索引0)和第二个元素(索引1)的比较,应该从0开始遍历 - 冗余的return语句:
return print(array)是多余的——print()函数返回None,所以你相当于返回了None,应该把打印和返回分开
修正后的完整代码
def bubblesort(array): n = 0 # 从0开始遍历,匹配数组的0索引规则 b = len(array) while b > 1: while n < b - 1: # 循环条件改为n < b-1,避免n+1超出最大索引 if array[n] > array[n+1]: array[n], array[n+1] = array[n+1], array[n] n += 1 b -= 1 n = 0 # 重置索引为0,开始下一轮排序 print(array) return array # 可选:返回排序后的数组,方便后续逻辑使用 array = [5,4,3,2,1] bubblesort(array)
验证效果
运行修正后的代码,会输出[1, 2, 3, 4, 5],完美完成冒泡排序,再也不会触发索引越界错误啦!
内容的提问来源于stack exchange,提问作者Szabi60
相关产品推荐
相关产品推荐

