我正在研究算法并尝试在Ruby中实现Insertion Sort。 我的代码:
b = [15, 23, 1, 17, 99, 68];
c=[];
for j in 2..b.size do
klucz = b[j];
c<<b[j];
i=j-1;
while i > 0 && c[i] > klucz do
c[i+1]=c[i];
i=i-1;
c[i+1]=key;
end
return c;
end
当我尝试运行代码时,我收到此错误
`block in <main>': undefined method `>' for nil:NilClass (NoMethodError)
有人有任何想法吗?
答案 0 :(得分:1)
它来自这条线:
while i > 0 && c[i] > klucz do
考虑第一次执行for j in 2..b.size do
循环:
现在在while i > 0 && c[i] > klucz do
行,c只有一个元素,但您尝试引用c[i]
,即c[1]
。 c[1]
引用数组的 second 元素,因为数组基于ruby为零。因此c[1]
为零,不能与大于比较运算符一起使用。