python - 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)
解决方案
至少有 2 个错误。
nextposition = numbers[index + 1]
应该
nextposition = index + 1
并且您遍历范围的长度,所以当谈到最后一次时,它的下一个位置在 len(range)+1 ,所以您超出了范围。
推荐阅读
- c# - 从参数c#中过滤数据
- jquery - 如何将 Watson 服务链接到 IBM Cloud 中的文件夹,我可以在 AJAX JQuery 上使用它的方式?
- javascript - 如何通过计算 Google 地球引擎中的其他图像来创建图像?
- amazon-web-services - 在 AWS 分配的负载均衡器 dns 上获取 https?
- vue.js - 没有文字的下拉菜单
- javascript - AngularJS ng-repeat with track by 渲染速度非常慢
- powershell - PowerShell脚本写出没有根目录的递归文件列表
- javascript - 我如何向后循环数组?
- c# - WPF 在代码隐藏中设置 TextBox 属性
- flutter - “Null”类型不是“图像”颤振问题的“文件”类型的子类型