Python中的插入排序错误

时间:2016-09-05 23:46:34

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

我正在尝试制作一个插入排序程序,按升序对列表进行排序。我收到了错误:

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)

3 个答案:

答案 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的原因