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

한빛미디어

뇌를 자극하는 알고리즘

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

퀵정렬

2014-07-18

|

by shinsy11

1634

p207 예제 코드와 같이 프로그램을 작성해 보았는데 정렬이 제대로 이루어지지 않고 있습니다.
몇번씩이나 작성하고 검토해보아도 같을 결과를 주네요ㅠㅜ
무엇이 문제일까요?

#include
void Swap(int* A, int* B)
{
        int Temp = *A;
        *A = *B;
        *B = Temp;
}

int Partition(int DataSet[], int Left, int Right)
{
        int First = Left;
        int Pivot = DataSet[First];

        ++Left;

        while(Left <= Right)
        {
                while(DataSet[Left] <= Pivot && Left < Right)
                        ++Left;

                while(DataSet[Right] > Pivot && Left < Right)
                        --Right;

                if(Left < Right)
                        Swap(&DataSet[Left], &DataSet[Right]);
                else
                        break;
        }

        Swap(&DataSet[First], &DataSet[Right]);

        return Right;
}

void QuickSort(int DataSet[], int Left, int Right)
{
        if(Left < Right)
        {
                int Index = Partition(DataSet, Left, Right);

                QuickSort(DataSet, Left, Index-1);
                QuickSort(DataSet, Index+1, Right);
        }
}
int main(void)
{
        int DataSet[] = {6, 4, 2, 3, 1, 5};
        int Length = sizeof DataSet /sizeof DataSet[0];
        int i = 0;

        QuickSort(DataSet, 0, Length-1);

        for(i=0; i         {
                printf("%d ", DataSet[i]);
        }

        printf("\n");

        return 0;
        }


결과 >> 4 1 3 2 5 6
댓글 입력