Stooge sort
|
|
Stooge sort is a recursive sorting algorithm with a time complexity of about O(n2.7). The exponent's exact value is log(3)/log(1.5).
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 2 or more elements in the current list subset, then: (or else, exit procedure)
- Sort the initial 2/3 of the list
- Sort the final 2/3 of the list
- Sort the initial 2/3 of the list again
Implementations
This sort implemented in Java:
// Interfacing method (to invoke the internal method with the correct initial values)
void stoogeSort(int[] a){
stoogeSort(a,0,a.length);
}
// Internal method
void stoogeSort(int[] a,int s,int e){
if(a[e-1]<a[s]){
int temp=a[s];
a[s]=a[e-1];
a[e-1]=temp;
}
int len=e-s;
if(len>1){
int third=len/3; // Reminder: This is (truncated) integer division
stoogeSort(a,s,e-third);
stoogeSort(a,s+third,e);
stoogeSort(a,s,e-third);
}
}
External links
Everything2.com - Stooge sort (http://www.everything2.com/index.pl?node=stooge%20sort)
