用栈实现快排的非递归实现
void QuickStack(int r[], int low, int high)
{
if (r == NULL || low > high)
return;
stack<int> s;
if (low < high)
{
int mid = partition(r, low, high);
if (low < mid - 1)
{
s.push(mid - 1);
s.push(low);
}
if (mid + 1 < high)
{
s.push(high);
s.push(mid + 1);
}
while (!s.empty())
{
int p = s.top();
s.pop();
int q = s.top();
s.pop();
mid = partition(r, p, q);
if (p < mid - 1)
{
s.push(mid - 1);
s.push(p);
}
if (q > mid + 1)
{
s.push(q);
s.push(mid + 1);
}
}
}
}