module Expertsort::StoogeSort

Public Instance Methods

stoogesort() click to toggle source

Straight up reimplementation of the algorithm on Wikipedia.

# File lib/expertsort/sorts/stoogesort.rb, line 4
def stoogesort
  self.dup.stoogesort!
end
stoogesort!(i = 0, j = self.length-1) click to toggle source
# File lib/expertsort/sorts/stoogesort.rb, line 8
def stoogesort!(i = 0, j = self.length-1)
  if self[j] < self[i]
    self[i], self[j] = self[j], self[i]
  end

  if j - i + 1 >= 3
    t = (j - i + 1) / 3
    stoogesort!(i, j - t)
    stoogesort!(i + t, j)
    stoogesort!(i, j - t)
  end

  self
end