안녕하세요
5장 퀵소트 소스에서요
int DataSet[] = { 258, 221, 21, 1, 31, 98, 37, 47, 11, 9 };
로 하여 퀵소트를 적용하니까 작동을 안하네요.
partition 부분에 오류가 있는 것 같습니다.
배열의 범위를 벗어나는 상황이 발생하는 것 같습니다.
그리고 main 함수에서
int Length = sizeof DataSet / sizeof DataSet[0];
부분이 이상합니다. 괄호를 빠뜨리신건 아닌지...
int Partition( int DataSet[], int Left, int Right )
{
int First = Left;
int Pivot = DataSet[First];
++Left;
while( Left <= Right ) {
while( DataSet[Left] <= Pivot )
{
++Left;
if(left > Length -1) break; // 추가
}
while( DataSet[Right] > Pivot )
{
--Right;
if(right < 0) break; // 추가
}
if ( Left < Right )
Swap( &DataSet[Left], &DataSet[Right]);
else
break;
}
Swap( &DataSet[First], &DataSet[Right] );
return Right;
}