Ниже приведен мой код реализации слияния сортировки algo в ruby. После запуска я получаю следующую ошибку. Пожалуйста, помогите мне в разрешении динамической постоянной ошибки.Ошибка динамического постоянного присваивания в Ruby реализации алгоритма сортировки слиянием
Ошибка, которую я получаю в терминале:
ruby merge.rb
merge.rb:8: dynamic constant assignment
Li=Array.new(n1.object_id)
^
merge.rb:9: dynamic constant assignment
Ri=Array.new(n2.object_id)
^
Мой код:
def merge(list,l,m,r)
i
j
k
n1 = m - l + 1
n2 = r - m
Li=Array.new(n1)
Ri=Array.new(n2)
0.upto(n1-1)do |i|
Li[i] = list[l + i]
end
0.upto(n2-1)do |j|
Ri[j] = list[m + 1+ j]
end
i = 0
j = 0
k = l
while i < n1 && j < n2
if Li[i] <= Ri[j]
list[k] = Li[i]
i=i+1
else
list[k] = Ri[j]
j=j+1
end
k=k+1
end
while i < n1
list[k] = Li[i]
i=i+1
k=k+1
end
while j < n2
list[k] = Ri[j]
j=j+1
k=k+1
end
end
def mergeSort(list,l,r)
if (l < r)
m = l+(r-l)/2
mergeSort(list, l, m)
mergeSort(list, m+1, r)
merge(list, l, m, r)
end
end
def printArray(list, size)
0.upto(size-1) do |i|
puts list[i]
end
end
list = Array[12, 11, 13, 5, 6, 7]
puts "Given array is"
printArray(list,list.size)
mergeSort(list, 0, list.size - 1)
puts "Sorted array is"
printArray(list,list.size)
Вам не нужно показывать остальную часть кода, так как он не влияет на ошибку. Вы можете продемонстрировать это, написав свой метод только с проблемными строками. См. Http://stackoverflow.com/help/mcve - предпочитайте минимальные примеры для SO. –