InBlock.gifvoid Exchange(int a[], int i, int j)
InBlock.gif{
InBlock.gif  if (i != j)
InBlock.gif  {
InBlock.gif    int tmp = a[i];
InBlock.gif    a[i] = a[j];
InBlock.gif    a[j] = tmp;
InBlock.gif  }
InBlock.gif}
InBlock.gif
int Partion(int a[], int begin, int end)
InBlock.gif{
InBlock.gif  int i = begin - 1;
InBlock.gif  int j = end + 1;
InBlock.gif
    int value = a[begin];
InBlock.gif
  while (1)
InBlock.gif  {
InBlock.gif    do {
InBlock.gif      i++;
InBlock.gif    } while(a[i] < value);
InBlock.gif
      do {
InBlock.gif      j--;
InBlock.gif    } while(a[j] > value);
InBlock.gif
    if (i < j)
InBlock.gif    {
InBlock.gif      Exchange(a, i, j);
InBlock.gif    }
InBlock.gif    else
InBlock.gif    {
InBlock.gif      return j;
InBlock.gif    }
InBlock.gif  }
InBlock.gif}
InBlock.gif
void Qsort(int a[], int begin, int end)
InBlock.gif{
InBlock.gif  if (begin < end)
InBlock.gif  {
InBlock.gif    int j = Partion(a, begin, end);
InBlock.gif
      Qsort(a, begin, j);
InBlock.gif    Qsort(a, j + 1, end);
InBlock.gif  }
InBlock.gif}