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;
}