rubyでクイックソートを書いてみる。
そういえば今までrubyでは .sortをつかって知らない振りをしていたんだがrubyで書くとどうなるかやってみる。
>> def qsort(x) x.size<2?x:(y=x.shift;z=x.partition{|i|i<y};[qsort(z[0]),y,qsort(z[1])]) end => nil >> qsort([3,4,5,1,1,2]) => [[[], 1, [[], 1, [2]]], 3, [[], 4, [5]]] >> def qsort(x) x.size<2?x:(y=x.shift;z=x.partition{|i|i<y};[qsort(z[0]),y,qsort(z[1])].flatten) end => nil >> qsort([3,4,5,1,1,2]) => [1, 1, 2, 3, 4, 5]
flattenがずるいと感じるのは、間違いなくだんだんscheme脳になってきたんじゃないかな?(笑)