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]
もっと簡単なやり方あるのかな。