トップページ > プログラム > 2015年03月30日 > 5htnBXQS

書き込み順位&時間帯一覧

32 位/195 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000001010000000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Ruby 初心者スレッド Part 57©2ch.net [転載禁止]©2ch.net

書き込みレス一覧

Ruby 初心者スレッド Part 57©2ch.net [転載禁止]©2ch.net
93 :デフォルトの名無しさん[]:2015/03/30(月) 12:52:21.90 ID:5htnBXQS
下のマージソートを真似してやると成功するんだけど、ちょっと理解できない・・・
http://melborne.github.io/2010/10/12/Ruby/
a,bに1つずつ入ったらmergeに行って小さい順にresに入れていく、を繰り返してると思うんですが、
これだと整列された2つが次々resに入ってもres全体では整列されてないように思えます・・・ご教授おねがいします


class Array
def merge_sort
tmp = self.dup
return tmp if tmp.length <= 1
a, b = self.half.map { |e| e.merge_sort }
merge(a, b)
end
def half
mid = length/2
return slice(0...mid), slice(mid..-1)
end

def merge(a, b)
res = []
until a.empty? && b.empty?
res <<
case
when a.empty? then b.shift
when b.empty? then a.shift
when a.first < b.first then a.shift
else b.shift
end
end
res
end
end
Ruby 初心者スレッド Part 57&#169;2ch.net [転載禁止]©2ch.net
95 :デフォルトの名無しさん[sage]:2015/03/30(月) 14:00:25.71 ID:5htnBXQS
再帰で結果待ちのe.mergesortに整列されたのが帰ってきて
それがa,bに渡されて整列されていくのかな


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。