これまた、どうでもいいことですが。2行でマージソートが書けたので載せます。ただし、クイックソートと違って読みにくいのがちょっと納得いかないです。 def msort(a) a.size==1?a:merge(msort(a[0..(a.size/2-1)]),msort(a[(a.size/2)..-1])) end def merge(a,b) a==[]?b:(b==[]?a:(a[0]<=b[0]?[a[0]]+merge(a[1..-1],b):[b[0]]+merge(a,b[1..-1]))) end