HOJ 1040

//快速排序算法
#include <iostream>
using namespace std;
int Partition(int a[],int p,int r);
void QuickSort(int a[],int p,int r);
int main()
{
 int case_num;
 cin>>case_num;
 for(int i=0;i<case_num;i++)
 {
  int num;
  cin>>num;
        int *p=new int[num];
  for(int j=0;j<num;j++)
  {
   cin>>p[j];
  }
  QuickSort(p,0,num-1);
  //注意在输出时最后一个不要多输出空格,否则会出现格式错误
  for(int n=0;n<num;n++)
  {
   if(n == num-1)
    cout<<p[n]<<endl;
   else
    cout<<p[n]<<" ";
  }
  delete []p;
 }
}
void QuickSort(int a[],int p,int r)
{
 if(p<r)
 {
  int q=Partition(a,p,r);
  QuickSort(a,p,q-1);
  QuickSort(a,q+1,r);
 }
}
int Partition(int a[],int p,int r)
{
 int i=p;
 int j=r+1;
 int x=a[p];
 while(true)
 {
  while(a[++i]<x && i<r);
  while(a[--j]>x);
  if(i>=j) break;
  int temp = a[i];
  a[i] = a[j];
  a[j] = temp;
 }
 a[p] = a[j];
 a[j] = x;
 return j;
}

posted @ 2010-03-13 22:12  北海小龙  阅读(196)  评论(0编辑  收藏  举报