//快排
//将数据分块
template <typename T>
int partition(T a[],int low,int high)
{
int temp = a[low];
while(low < high)
{
while((low < high)&&(a[high] > temp))
{
high--;
}
if(low < high)//一定要,当a[] = {0,1} 试试
{
a[low++] = a[high];
}
while((low < high)&&(a[low] < temp))
{
low++;
}
if(low < high)//一定要,当a[] = {0,1} 试试
{
a[high--] = a[low];
}
}
a[low] = temp;
return low;
}
//递归
template <typename T>
void quicksort(T a[],int low,int high)
{
int mid;
if(low < high)
{
mid = partition(a,low,high);
quicksort(a,low,mid-1);
quicksort(a,mid+1,high);
}
}
//对外接口
template <typename T>
void tQuickSort(T a[])
{
quicksort(a, 0, (strlen(a) - 1));
}