int swap(int *pa, int *pb)
{
  int t = *pa;
  *pa = *pb;
  *pb = t;
  return 0;
}
int partition(int a[], int s, int e)
{
  int i = s - 1, j;
  for (j = s; j < e; ++j)
  {
    if (a[j] >= a[e])
    {
      ++i;
      swap(a+i, a+j);
    }
  }
  ++i;
  swap(a+i, a+e);
  return i;
}

int qsort(int a[], int s, int e)
{
  if (s < e)
  {
    int p = partition(a, s, e);
    qsort(a, s, p - 1);
    qsort(a, p + 1, e);
  }
  return 0;
}
int main()
{
  int a[] = {3, 2, 4, 6, 0, 7, 5, 3};
  qsort(a, 0, 7);
  int i;
  for (i = 0; i < 7; ++i)
    printf("%d\n", a[i]);
  return 0;
}
posted on 2012-04-12 19:07  brucexu  阅读(184)  评论(0编辑  收藏  举报