Tu banner alternativo

Stooge sort

Stooge sort is a topic that has captured the attention of many people in recent times. With its relevance and topicality, it has become a topic of general interest for a wide range of audiences. From its impact on society to its implications in various areas, Stooge sort has generated debate and reflection in different sectors. In this article, we will explore the different facets of Stooge sort and its influence on our daily reality.

Tu banner alternativo

Stooge sort
Visualization of Stooge sort (only shows swaps).
ClassSorting algorithm
Data structureArray
Worst-case performance
Worst-case space complexity

Stooge sort is a recursive sorting algorithm. It is notable for its exceptionally poor time complexity of = The algorithm's running time is thus slower compared to reasonable sorting algorithms, and is slower than bubble sort, a canonical example of a fairly inefficient sort. It is, however, more efficient than Slowsort. The name comes from The Three Stooges.[1]

The algorithm is defined as follows:

  • If the value at the start is larger than the value at the end, swap them.
  • If there are three 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.

Implementation

Pseudocode

 function stoogesort(array L, i = 0, j = length(L)-1){
     if L > L then       // If the leftmost element is larger than the rightmost element
         swap(L,L)       // Then swap them
     if (j - i + 1) > 2 then   // If there are at least 3 elements in the array
         t = floor((j - i + 1) / 3)
         stoogesort(L, i, j-t) // Sort the first 2/3 of the array
         stoogesort(L, i+t, j) // Sort the last 2/3 of the array
         stoogesort(L, i, j-t) // Sort the first 2/3 of the array again
     return L
 }

References

  1. ^ "CSE 373" (PDF). courses.cs.washington.edu. Retrieved 14 September 2020.

Sources