一尘不染

学习Ruby中的插入排序

algorithm

我刚刚通过在线发布的材料开始了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)

我敢肯定这是一个相当基本的问题,但我现在无法理解。任何帮助或技巧将不胜感激。


阅读 204

收藏
2020-07-28

共1个答案

一尘不染

您正在超出数组的范围。给出的示例假定了1索引数组,但是ruby中的数组是0索引数组。第一行应该是

for j in 1...num.length
2020-07-28