我正在尝试制作一个插入排序程序,按升序对列表进行排序。我收到了错误:
line 16, in <module> if listNums[x] < listNums[i]:
对于这个程序:
listNums = [54, 21, 76, 43, 65, 98, 65, 32, 34, 38]
x = 1
i = 0
Copy = 0
for z in range (0, len(listNums)):
if listNums[x] < listNums[i]:
Copy = listNums[i]
listNums[i] = listNums[x]
listNums[x] = Copy
i = i + 1
x = x + 1
print(listNums)
答案 0 :(得分:1)
可能是一个边界错误,因为x
最终增加到len(listNums)
,超出了零索引数组的边界。
只尝试迭代range(0, len(listNums)-1)
。
答案 1 :(得分:0)
我只想指出有更好的方法,即
listNums = [54, 21, 76, 43, 65, 98, 65, 32, 34, 38]
listNums.sort()
print listNums
给出了
[21, 32, 34, 38, 43, 54, 65, 65, 76, 98]
=> None
(在repl.it上编译)
希望这有帮助!
答案 2 :(得分:0)
这不是insertion sort error
在最后一次迭代中,即len(listNums)次迭代,x的值超出列表的长度,这就是它给出IndexError: list index out of range
的原因