def insert_sort(array): array_length = len(array) for i in range(1, array_length): j = i while(array[j] > array[j-1]): array[j], array[j-1] = array[j-1], array[j] j = j-1 return array if __name__ == '__main__': array = [1,6,2,4,8,3,7,5,9] print(insert_sort(array))
想要写一个插入排序,不知道为什么会越界?
数组的索引的最大值应该是数组的长度-1 是最后一个元素 所以 应该是
def insert_sort(array): array_length = len(array) for i in range(1, array_length-1): j = i while(array[j] > array[j-1]): array[j], array[j-1] = array[j-1], array[j] j = j-1 return array if __name__ == '__main__': array = [1,6,2,4,8,3,7,5,9] print(insert_sort(array))
我后来想了一下,原来不是发生正越界,而是发生了负越界,我的程序不可能出现array[9],但是会出现array[-10]的情况,这个时候会越界。不过很感谢你
正确的代码是while行加一个判断:while((array[j] > array[j-1]) and j>=1):