Quick Sort In Ruby

Simple/dumb QuickSort in RubyLanguage, choosing the first element as pivot.

 def qsort(list)
  return [] if list.size == 0
  x, *xs = *list
  less, more = xs.partition{|y| y < x}
  qsort(less) + [x] + qsort(more)
 end
Slightly less readable but hey, we save a line :P
 def qs(l)
  return [] if (x,*xs=l).empty?
  less, more = xs.partition{|y| y < x}
  qs(less) + [x] + qs(more)
 end

Slightly more readable, and hey, we save two lines.

 def quicksort a
  (pivot = a.pop) ? quicksort(a.select{|i| i <= pivot}) + [pivot] + quicksort(a.select{|i| i > pivot}) : []
 end

But that, of course, is much too inefficient because it doesn't use partition.


EditText of this page (last edited April 24, 2008) or FindPage with title or text search