Bogobogosort

Because Bogosort was far too efficient.

Algorithm

Bogobogosort sorts a list of n elements by recursively applying Bogosort on progressively larger prefixes until everything is in order.


function bogobogosort(a):
  if a is sorted: return a
  k ← len(a) - 1
  # Sort the first k elements (recursively!)
  a[0:k] ← bogobogosort(a[0:k])
  # If the prefix is in order, keep going; otherwise reshuffle entire array
  if a[0:k] ≤ a[k]:
    return a
  else:
    shuffle(a)
    return bogobogosort(a)
      

Complexity

The expected running time is on the order of O(n!n)—a factorial of factorials—making it one of the slowest sorting algorithms ever conceived.

Visual Demo Controls

Implementation details live in games/js/demos.js.

← Back to gallery