퀵정렬
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