Ruby でクイックソート

とりあえず、書いてみた。

[ソース]

def quick_sort(seq)
    if seq == []
        return []
    end
    x  = seq.first
    xs = seq[1..seq.size]
    quick_sort(xs.select { |a| a < x }) + [x] + quick_sort(xs.select { |a| a >= x })
end

source = (1..10).sort_by{rand}
p source
p quick_sort source

[出力]

[4, 5, 9, 2, 1, 3, 8, 6, 7, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


もっと簡単なやり方あるのかな。