template<typename T>
void Sort(T arrayT[], int begin, int end)
{
int low = begin;
int high = end;
int key = arrayT[low];
while (low < high)
{
// 从后面找比key小的值
while(arrayT[high] >= key && high > low)
--high;
if (high <= low)
break;
arrayT[low] = arrayT[high];
while(arrayT[low] <= key && low < high)
++low;
if (high <= low)
break;
arrayT[high] = arrayT[low];
}
arrayT[low] = key;
if (low <= high)
{
if (begin < low - 1)
Sort(arrayT, begin, low - 1);
if (end > high + 1)
Sort(arrayT, high + 1, end);
}
}
快速排序是稳定的