Tuesday, December 24, 2013

Advanced Sorting Algorithm

#include <stdio.h> 
void sort(int a[], int n) {
   int i, j, t, p;
   re: if(n < 32) {
      for(i = 1; i < n; i++){
         for(t = a[i], j = i - 1; j >= 0 && a[j] > t; j--)
            a[j + 1] = a[j];
         a[j + 1] = t;
      }
      return;
   }
   p = a[(n + 1) >> 1];
   for(i = -1, j = n;;) {
      while(a[++i] < p);
      while(a[--j] > p);
      if(i >= j) break;   
      t = a[i];
      a[i] = a[j];
      a[j] = t;
   }
   if((n - i) > 1)
      sort(a + i, n - i);
   n = i;
   goto re;
}

int main() {
   int a[512], n = 512;
         
   sort(a, n); 
   return 0;
}

No comments:

Post a Comment