Ruby 系统堆栈错误
因此,我有以下代码用于Ruby中的合并排序Ruby 系统堆栈错误,ruby,Ruby,因此,我有以下代码用于Ruby中的合并排序 class MergeSort def sort(array) if array.length == 1 || array.length == 0 return array end firstHalf = array[0..array.length / 2] secondHalf =
class MergeSort
def sort(array)
if array.length == 1 || array.length == 0
return array
end
firstHalf = array[0..array.length / 2]
secondHalf = array[(array.length / 2) + 1..array.length]
firstHalf = sort(firstHalf)
secondHalf = sort(secondHalf)
b = 0
c = 0
for i in (0..(firstHalf.length - 1))
while b < secondHalf.length && firstHalf[i] >= secondHalf[b]
array[c] = secondHalf[b]
b = b + 1
c = c + 1
array[c] = firstHalf[i]
c = c + 1
end
return array
end
end
array = [1,4,9,14,20,25]
puts MergeSort::new.sort(array)
类合并排序
def排序(数组)
如果array.length==1 | | array.length==0
返回数组
结束
firstHalf=数组[0..array.length/2]
secondHalf=array[(array.length/2)+1..array.length]
firstHalf=排序(firstHalf)
secondHalf=排序(secondHalf)
b=0
c=0
对于i in(0..(前半部分长度-1))
而b=secondHalf[b]
数组[c]=secondHalf[b]
b=b+1
c=c+1
数组[c]=前半部分[i]
c=c+1
结束
返回数组
结束
结束
数组=[1,4,9,14,20,25]
puts MergeSort::new.sort(数组)
当我运行代码时,我得到一个
SystemStackError
。有人能告诉我为什么会这样吗?谢谢。要调用。新建您必须在类中有初始化方法。
您可能想做的是在类本身上调用.sort
,在这种情况下,您必须在其前面加上self
,因此:
class MergeSort
def self.sort(array)
...
之后你可以这样称呼它:
MergeSort.sort(array)
猜测一下,一旦数组长度达到3(即元素[0..2]
),调用
firstHalf = array[0..array.length / 2]
评估为
0..1.5
如果1.5四舍五入为2
然后再次调用sort[0..2]
最终会出现堆栈溢出?它不会引发SystemStackError。它会引发语法错误。