2010年(41)
分类:
2010-06-25 17:57:11
/*
*文件描述:这是一个快速排序
*作者:作者
*最后修改时间:
*版本:1.0
*/
#include
using namespace std;
const int len = 13;
int partitions( int *arr, int iLow, int iHigh );
void quickSort( int *arr, int iLow, int iHigh );
void display( int *arr, int length );
int main( int argc, char **argv )
{
int arr[len] = {
20,11,12,5,
6,13,8,9,14,
7,33,22,100
};
display( arr, len );
quickSort( arr, 0, len-1 );
display( arr, len );
return 0;
}
int partitions( int *arr, int iLow, int iHigh )
{
int key = arr[iLow];
while ( iLow < iHigh )
{
while ( ( arr[iHigh] >= key ) && ( iLow < iHigh) )
{
iHigh--;
}
arr[iLow] = arr[iHigh];
while( ( arr[iLow] <= key ) && ( iLow < iHigh) )
{
iLow++;
}
arr[iHigh] = arr[iLow];
}
arr[iLow] = key;
return iLow;
}
void quickSort( int *arr, int iLow, int iHigh )
{
int keyPos;
if ( iLow < iHigh )
{
keyPos = partitions( arr, iLow, iHigh );
quickSort ( arr, iLow, keyPos-1 );
quickSort ( arr, keyPos+1, iHigh );
}
}
void display( int *arr, int length )
{
for ( int i = 0; i < length; i++ )
{
cout< } cout< }