如何修复编写插入排序时出现的List index out of range错误
插入排序
List index out of range错误触发原因及修复方案 List index out of range错误的本质是代码尝试访问了列表不存在的下标位置,插入排序实现过程中该错误通常由以下几种逻辑问题导致:
- 外层循环边界设置错误:长度为
n的列表合法下标范围是0~n-1,如果外层循环的终止值设为n,访问arr[n]时会直接触发越界。正常插入排序外层循环默认第一个元素为有序区间,应该从下标1遍历到下标n-1。 - 内层比较循环缺少左边界判断:内层循环需要将当前待插入元素和前面的有序区间元素从后往前比较,如果只写了
arr[j] > 待插入元素的判断条件,没有补充j >= 0的边界限制,当待插入元素比有序区间所有元素都小时,j会递减到-1,此时访问arr[j]就会触发越界。 - 元素移动/赋值阶段用错下标:比如把移动元素时的
arr[j+1]误写为arr[j],或者错误操作了有序区间外的下标位置。
你可以对照以下正确的Python插入排序实现检查你的代码:
def insertion_sort(arr): arr_len = len(arr) for i in range(1, arr_len): # 记录当前待插入元素 current_val = arr[i] # 有序区间的最后一个元素下标 j = i - 1 # 先判断j不越界,再比较元素大小 while j >= 0 and arr[j] > current_val: # 有序区间元素后移 arr[j + 1] = arr[j] j -= 1 # 插入当前元素到正确位置 arr[j + 1] = current_val return arr
内容的提问来源于stack exchange,提问作者EXPLICIT GAMING
相关产品推荐
相关产品推荐

