module Expertsort::BogoBogoSort

Public Instance Methods

bogobogosort() click to toggle source
# File lib/expertsort/sorts/bogobogosort.rb, line 3
def bogobogosort
  self.dup.bogobogosort!
end
bogobogosort!(*arr) click to toggle source
# File lib/expertsort/sorts/bogobogosort.rb, line 7
def bogobogosort!(*arr)
  arr = (arr.length == 1) ? arr[0] : self
  is_sorted = -> (arr) { arr.each_cons(2).all? { |a, b| (a <=> b) <= 0 } }

  while !is_sorted.call(arr)
    arr.shuffle!
    arr.bogobogosort!(dup[0..-2])
  end

  arr
end