//快速排序可以实现较好的平均性能
//实现快速排序
#define ARRAY_SIZE 1024
template <typename T>
void QuickSort(T a[], int l, int h)
{
T pivot = a[l];
int i = l; //从左至右的游标
int j = h+1; //从右至左的游标
if(l>=h)
{
return;
}
while(true)
{
//下面的两个循环找到两个从两端至中间需要交换的值
do
{
i = i+1;
}
while((a[i]<pivot) && (i<=h));
do
{
j = j-1;
}
while((a[j]>pivot) && (j>=l));
if(i>=j)
{
break; //未找到需要交换的
}
std::swap(a[i], a[j]);
}
std::swap(a[l], a[j]);
QuickSort(a, l, j-1);
QuickSort(a, j+1, h);
}