Visualization of Stooge sort.


Class  Sorting algorithm 

Data structure  Array 
Worst case performance  O(n^{log 3 /log 1.5}) 
Worst case space complexity  O(n) 
Stooge sort is a recursive sorting algorithm with a time complexity of O(n^{log 3 / log 1.5} ) = O(n^{2.7095...}). The running time of the algorithm is thus slower compared to efficient sorting algorithms, such as Merge sort, and is even slower than Bubble sort, a canonical example of a fairly inefficient and simple sort.
The algorithm is defined as follows:
 If the value at the end is smaller than the value at the start, swap them.
 If there are 3 or more elements in the list, then:
 Stooge sort the initial 2/3 of the list
 Stooge sort the final 2/3 of the list
 Stooge sort the initial 2/3 of the list again
 else: exit the procedure
It is important to get the integer sort size used in the recursive calls by rounding the 2/3 upwards, e.g. rounding 2/3 of 5 should give 4 rather than 3, as otherwise the sort can fail on certain data. However, if the code is written to end on a base case of size 1, rather than terminating on either size 1 or size 2, rounding the 2/3 of 2 upwards gives an infinite number of calls.
The algorithm gets its name from slapstick routines of The Three Stooges, in which each stooge hits the other two.^{[citation needed]}
Implementation[edit]
function stoogesort(array L, i = 0, j = length(L)1)
if L[j] < L[i] then
L[i] ↔ L[j]
if (j  i + 1) > 2 then
t = (j  i + 1) / 3
stoogesort(L, i , jt)
stoogesort(L, i+t, j )
stoogesort(L, i , jt)
return L
References[edit]
 Black, Paul E. "stooge sort". Dictionary of Algorithms and Data Structures. National Institute of Standards and Technology. Retrieved 20110618.
 Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2001) [1990]. "Problem 73". Introduction to Algorithms (2nd ed.). MIT Press and McGrawHill. pp. 161–162. ISBN 0262032937.
External links[edit]
 Everything2.com – Stooge sort
 Sorting Algorithms (including Stooge sort)
 Stooge sort – implementation and comparison
This computer science article is a stub. You can help Wikipedia by expanding it. 
This page uses Creative Commons Licensed content from Wikipedia. A portion of the proceeds from advertising on Digplanet goes to supporting Wikipedia.