ABOUTYOU
实际上,最常见的方法是保留自己的堆栈。下面是C中的递归快速排序函数:void quicksort(int* array, int left, int right)
{
if(left >= right)
return;
int index = partition(array, left, right);
quicksort(array, left, index - 1);
quicksort(array, index + 1, right);
}下面是如何通过保留自己的堆栈来使其迭代的方法:void quicksort(int *array, int left, int right)
{
int stack[1024];
int i=0;
stack[i++] = left;
stack[i++] = right;
while (i > 0)
{
right = stack[--i];
left = stack[--i];
if (left >= right)
continue;
int index = partition(array, left, right);
stack[i++] = left;
stack[i++] = index - 1;
stack[i++] = index + 1;
stack[i++] = right;
}
}显然,这个例子不检查堆栈边界.。实际上,您可以根据给定的左、右值的最坏情况对堆栈进行大小调整。但你知道这个主意。