ruby - 学习 Ruby 中的插入排序

标签 ruby algorithm

我刚刚通过在线发布的 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/

相关文章:

algorithm - 沿已知轴在外部路径边缘内查找内部路径的位置

algorithm - 寻找最小/最大权重 Steiner 树

ruby - 在普通 Ruby 类中使​​用方法回调

ruby-on-rails - NewRelic 中后台任务的通知

algorithm - 最小平铺顺序

algorithm - 如果可能,程序员应该总是使用 < 而不是 <= 吗?

ruby-on-rails - ruby 模块作为方法的集合

ruby-on-rails - 将一个 Controller 重定向到另一个 Controller

ruby - 匹配子串但不匹配异常子串

algorithm - 高度为h的红黑树的最小节点数计算公式是什么?