我刚刚通过在线发布的材料开始了MIT算法入门课程。在课程中,我还决定通过对其中的算法进行编码来学习/增强我的Ruby技能。
我正在使用给定的第一个算法,即插入排序,并且输入了以下代码,但是运行它时出现此错误:
insertsort.rb:5:in’>’:Fixnum与nil的比较失败(ArgumentError)
def insertionsort(num) for j in 2..num.length key = num[j] i = j - 1 while i > 0 and num[i] > key num[i+1] = num[i] i = i - 1 end num[i+1] = key end puts num end numbers = [23,34,46,87,12,1,66] insertionsort(numbers)
我敢肯定这是一个相当基本的问题,但我现在无法理解。任何帮助或技巧将不胜感激。
您正在超出数组的范围。给出的示例假定了1索引数组,但是ruby中的数组是0索引数组。第一行应该是
for j in 1...num.length