Harman Patil (Editor)

Stooge sort

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Class
  
Sorting algorithm

Worst-case performance
  
O(n)

Data structure
  
Array

Worst-case space complexity
  
O(n)

Stooge sort

Stooge sort is a recursive sorting algorithm with a time complexity of O(nlog 3 / log 1.5 ) = O(n2.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
  • 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.

    References

    Stooge sort Wikipedia