
Sorting Algorithm

This is a sorting algorithm.   It may be applied to a set of data in order to sort it.    
For comparing various sorts, see compare sorts.  
For other sorting algorithms,   see sorting algorithms,   or:

O(n logn) sorts
Heap sort |
Merge sort |
Patience sort |
Quick sort
O(n log2n) sorts
Shell Sort
O(n2) sorts
Bubble sort |
Cocktail sort |
Cocktail sort with shifting bounds |
Comb sort |
Cycle sort |
Gnome sort |
Insertion sort |
Selection sort |
Strand sort
other sorts
Bead sort |
Bogo sort |
Common sorted list |
Composite structures sort |
Custom comparator sort |
Counting sort |
Disjoint sublist sort |
External sort |
Jort sort |
Lexicographical sort |
Natural sorting |
Order by pair comparisons |
Order disjoint list items |
Order two numerical lists |
Object identifier (OID) sort |
Pancake sort |
Quickselect |
Permutation sort |
Radix sort |
Ranking methods |
Remove duplicate elements |
Sleep sort |
Stooge sort |
[Sort letters of a string] |
Three variable sort |
Topological sort |
Tree sort


Task

Bogosort a list of numbers.



Bogosort simply shuffles a collection randomly until it is sorted.

"Bogosort" is a perversely inefficient algorithm only used as an in-joke.

Its average run-time is   O(n!)   because the chance that any given shuffle of a set will end up in sorted order is about one in   n   factorial,   and the worst case is infinite since there's no guarantee that a random shuffling will ever produce a sorted sequence.

Its best case is   O(n)   since a single pass through the elements may suffice to order them.



Pseudocode:

while not InOrder(list) do
   Shuffle(list)
done



The Knuth shuffle may be used to implement the shuffle part of this algorithm.




/* NetRexx */
options replace format comments java crossref savelog symbols nobinary
 
import java.util.List
 
method isSorted(list = List) private static returns boolean
 
  if list.isEmpty then
    return isTrue
 
  it = list.iterator
  last = Comparable it.next
  loop label i_ while it.hasNext
    current = Comparable it.next
    if last.compareTo(current) > 0 then
      return isFalse
    last = current
    end i_
 
  return isTrue
 
method bogoSort(list = List) private static
  loop label s_ while \isSorted(list)
    Collections.shuffle(list)
    end s_
 
  return
 
method main(args = String[]) public constant
  samples = [int 31, 41, 59, 26, 53, 58, 97, 93, 23, 84]
  alst = ArrayList(samples.length)
  loop iv = 0 to samples.length - 1
    alst.add(Integer(samples[iv]))
    end iv
 
  say 'unsorted:' alst.toString
  bogoSort(alst)
  say 'sorted:  ' alst.toString
 
  return
 
method isTrue public static returns boolean
  return 1 == 1
 
method isFalse public static returns boolean
  return \isTrue
 