首页 > 解决方案 > IndexError:插入排序代码的列表索引超出范围

问题描述

[我不确定如何解决这个问题(A 级 CS)

numbers = [12,10,16,11,20]

def InsertionSort(numbers):
    for index in range (len(numbers)):
        
        nextposition = numbers[index + 1]
        preposition = index 

        if numbers[nextposition] < numbers[preposition]:
            print('check1')
            while preposition > 0 and numbers[preposition] > numbers[nextposition]:
                temp = numbers[preposition]
                numbers[preposition] = numbers[nextposition]
                numbers[nextposition] = temp
                print ('check')
            numbers[nextposition] = numbers[nextposition + 1]
            
    print (numbers)
    return numbers


InsertionSort(numbers)

在这里追溯

标签: pythoninsertion-sortindex-error

解决方案


至少有 2 个错误。

nextposition = numbers[index + 1] 

应该

nextposition = index + 1

并且您遍历范围的长度,所以当谈到最后一次时,它的下一个位置在 len(range)+1 ,所以您超出了范围。


推荐阅读