Talk:Stooge sort

From Wikipedia, the free encyclopedia

[edit] Two implementations is too many

One is sufficient to explain the algorithm; two is just redundant. I propose that we remove the Java implementation and keep the more concise Python version. --bmills 17:45, 24 February 2006 (UTC)

I've rewritten it in pseudocode. —Ruud 12:43, 25 February 2006 (UTC)
It's scaringly similar to the version on the German (wcih I hadn't looked at yet) so that's a good sign. —Ruud 12:46, 25 February 2006 (UTC)

[edit] 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);
 }
}

[edit] Python

def stoogesort(x):
    if len(x) > 1 and x[-1] < x[0]:
        x[0], x[-1] = x[-1], x[0]
 
    if len(x) > 2:
        third = len(x) / 3
        x[:-third] = stoogesort(x[:-third])
        x[third:] = stoogesort(x[third:])
        x[:-third] = stoogesort(x[:-third])
 
    return x