메뉴 바로가기 검색 및 카테고리 바로가기

한빛미디어

뇌를 자극하는 알고리즘

뇌를 자극하는 알고리즘 질의응답 게시판입니다.

5장 퀵소트 오류가 있네요

2010-01-03

|

by

2350

안녕하세요

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;
}
댓글 입력