不好意思,总是写错点东西,再次修改如下:
int QuickSort( List &L )
{
Stack S;
S.Push( 0 );
S.Push( L.length()-1 );
while ( !S.Empty() )
{
int a, b;
S.Pop( b );
S.Pop( a );
if (a<b)
{
int k = Partition( L, a, b ); // 划分
S.Push( a );
S.Push( k-1 );
S.Push( k+1 );
S.Push( b );
}
}
return 1;
}
逻辑上有点欠缺,修改如下:
int QuickSort( List &L )
{
Stack S;
S.Push( 0, L.length()-1 );
while ( !S.Empty() )
{
int a, b;
S.Pop( b );
S.Pop( a );
if (a<b)
{
int k = Partition( L, a, b ); // 划分
S.Push( a );
S.Push( k-1 );
S.Push( k+1 );
S.Push( b );
}
}
return 1;
}
int QuickSort( List &L )
{
Stack S;
S.Push( 0, L.length()-1 );
while ( !S.Empty() )
{
int a, b;
S.Pop( b );
S.Pop( a );
int k = Partition( L, a, b ); // 划分
if ( k-1>a )
{
S.Push( a );
S.Push( k-1 );
}
if ( k+1<b )
{
S.Push( k+1 );
S.Push( b );
}
}
return 1;
}