我刚刚通过在线发布的 Material 开始了麻省理工学院算法导论类(class)。除了类(class)之外,我还决定通过编写其中的算法来学习/提高我的 Ruby 技能。
我正在使用给出的第一个算法,即插入排序,我输入了以下代码,但在运行时出现此错误:
insertionsort.rb:5:in `>': comparison of Fixnum with nil failed (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
关于ruby - 学习 Ruby 中的插入排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/624666/