Search

'뇌를 자극하는 알고리즘 오탈자'에 해당되는 글 1건

  1. 2009/10/09 [뇌를 자극하는 알고리즘 오탈자] P.207 Quick 정렬 알고리즘 구현 코드

본 오탈자는 이태영님께서 저에게 메일로 알려주셨습니다.
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;
}
저작자 표시 비영리 변경 금지