文档介绍:快速排序的非递归算法如下:
int quickpass ( sqlist &R, int low, int high )
{
[0] = [low]; pivotkey =快速排序的非递归算法如下:
int quickpass ( sqlist &R, int low, int high )
{
[0] = [low]; pivotkey = [low].key;
while ( low < high )
{
while ( low < high && [high].key >= pivotkey ) high--;
[low] = [high];
while ( low < high && [low].key <= pivotkey ) low++;
[high] = [low];
}
[low] = [0];
return low;
}
void quicksort ( sqlist &r, int low, int high )
{
INITSTACK ( S );
while ( low < high )
{
pivotloc = quickpass ( r, low, high );
if ( pivotloc+1 < high ) PUSH ( S, ( pivotloc+1, high ) );
high = pivotloc-1;
if ( low >= high && ! EMPTY ( S ) ) ( low, high ) = POP ( S );
}
}