私は反復的なmergesortを実行しようとしています(すでにRubyにソート方法があります)。ことで、これは私がこれまで試したものです言った:in_groups_ofのRuby MergeSortエラー
def merge_sort(array)
return array unless array.size > 1
merge_size = 2
loop do
offset = 0
array.in_groups_of(merge_size) do |sub_array|
subs = sub_array.in_groups_of(merge_size/2)
sub_array.size.times do |i|
next if i + offset >= array.size
if(subs[0].empty? || subs[0].first.nil?)
array[i + offset] = subs[1].shift; next
end
if(subs[1].empty? || subs[1].first.nil?)
array[i + offset] = subs[0].shift; next
end
array[i + offset] = (subs[0].first < subs[1].first) ? subs[0].shift : subs[1].shift
end
offset += sub_array.size
end
break if merge_size > array.size
merge_size *= 2
end
array
end
私は私のプログラムを実行すると、それはすべてのオブジェクトに入った後、私はエラーを取得する: 'block in merge_sort': undefined method 'in_groups_of' for #<Array:0x0000002c0db20> (NoMethodError)
誰かがそれを修正する方法を教えてもらえますか?私はそれが規則的なルビーではなくレールの一部であるかもしれないような何かを読んだ。どのように私はレールなしでRubyを修正することができますか?