Python 中的插入排序错误

Insertion-sort error in Python

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

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)

可能是边界错误,因为 x 最终递增到 len(listNums),超出零索引数组的边界 1。

尝试仅遍历 range(0, len(listNums)-1)

我只想指出有更好的方法,即

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)

希望对您有所帮助!

这不是 insertion sort error 在最后一次迭代中,即第 len(listNums) 次迭代中,x 的值超出了列表的长度,这就是它给出 IndexError: list index out of range

的原因