私は、Rubyで再帰的なマージソートアルゴリズムを書くことを割り当てています。私はそれを周りに私の頭を包むことができるようにするためにピースでこれを分解しようとしています。私がこれまで行ってきたことは、各配列に1つの要素しか残されなくなるまで「分割」のステップを達成しようとしていることです。Rubyマージソート - この再帰関数はどのように機能しますか?
a = [5, 2, 4, 6, 1, 7, 3, 8]
def divide(arr)
return arr if arr.length < 2
else
arr1 = puts divide(arr[0..arr.length/2-1])
arr2 = puts divide(arr[arr.length/2..arr.length])
end
私は、出力はと思うだろう:
[5] [8]
しかし、それは出て印刷します。
5
2
4
6
1
7
3
8
それが動作しない方法は?
男、私はとても混乱していますが、処分した
は、私はそれが助けていただければ幸いです、あなたのコードがどのように機能するかを示すために、いくつかのプリントを追加しましたそれはちょうど[8]を返す。 –