
  int fast_sort (int *a, int left, int right)
  {
      int i = left, j = right;
      int middle = a[(left+right) / 2];
 
      while (i < middle && a[i] < middle) i++;
      while (j > left && a[j] > middle) j--;
  
      if (i <= j) {
          swap (&a[i], &a[j]);
          ++i;
          --j;
      }
      
      if (i < right)
          fast_sort (a, i, right);
      if (j > left)
          fast_sort (a, left, j);
   
	  return 0;
	}
