# # # # # # # # #
# /8/quicksort.rb
#
# by               Jan Lelis
# e-mail:          mail@janlelis.de
# type/version:    ruby 
# snippet url:     http://rbJL.net/8/quicksort.rb
# original post:   http://rbJL.net/8-quicksort-in-5-minutes
# license:         CC-BY-NC (DE)
#
# (c) 2009 Jan Lelis.

class Array
  def qsort
    return self if self.length <= 1
    pivot = self.shift
    left, right = [],[]
    self.each { |ele| ele <= pivot ? left << ele : right << ele }
    left.qsort + [pivot] + right.qsort
  end
end

# Example of use
# p t[8,6,544,423,3].qsort