본 오탈자는 이태영님께서 저에게 메일로 알려주셨습니다.
Quick 정렬의 구현 코드 중 Partition()함수의 while 문의 비교문에 문제가 있습니다. 자세한 내용은 다음과 같습니다.
안녕하세요.
서점에서 뇌를 자극하는 알고리즘 책을 구입하고
바로 탐독하고 있는 독자입니다. ^^
책 정말 재밌게 잘 보고 있습니다.
다름이 아니라 퀵소트 부분을 보면서
P.207과 알고리즘을 똑같이 구현했는데 책에서 나오는
배열 인덱스 6개로 하면 잘되나 8개 이상으로 하면 어중간하게 되다 말더라구요.
교환이 한 번 덜 된거 같아서 while 을 수정하니까 잘 되어서 이렇게 메일 보내드립니다.
int Partition( int DataSet[], int Left, int Right )
{
int First = Left;
int Pivot = DataSet[First];
++Left;
while( Left <= Right ) // 원래는 Left < Right로 되어 있어 비교를 1회 '덜' 함.
{
while( DataSet[Left] <= Pivot )
++Left;
while( DataSet[Right] > Pivot )
--Right;
if ( Left < Right )
Swap( &DataSet[Left], &DataSet[Right]);
else
break;
}
Swap( &DataSet[First], &DataSet[Right] );
return Right;
}
{
int First = Left;
int Pivot = DataSet[First];
++Left;
while( Left <= Right ) // 원래는 Left < Right로 되어 있어 비교를 1회 '덜' 함.
{
while( DataSet[Left] <= Pivot )
++Left;
while( DataSet[Right] > Pivot )
--Right;
if ( Left < Right )
Swap( &DataSet[Left], &DataSet[Right]);
else
break;
}
Swap( &DataSet[First], &DataSet[Right] );
return Right;
}
'뇌를 자극하는 알고리즘' 카테고리의 다른 글
| 뇌를 자극하는 알고리즘, 2010 대한민국 우수 학술 도서에 선정! (2) | 2010/06/05 |
|---|---|
| 강컴에 등록된 두 번째 <뇌를 자극하는 알고리즘> 서평 (0) | 2009/10/27 |
| 교보문고에 등록된 뇌를 자극하는 알고리즘 서평 (0) | 2009/10/27 |
| 강컴에 등록된 첫 번째 <뇌를 자극하는 알고리즘> 서평 (2) | 2009/10/16 |
| [뇌를 자극하는 알고리즘 오탈자] P.207 Quick 정렬 알고리즘 구현 코드 (0) | 2009/10/09 |
TAG 뇌를 자극하는 알고리즘 오탈자

