질문할 사항이 있어요..
2011-04-02
|
by yjsjang
2225
현재 [뇌를자극하는 알고리즘]으로 공부중인 학생인데요. 다름이 아니라..
5장 퀵정렬에서,
void QuickSort(int DataSet[], int Left, int Right) 이 함수 있잖아요~~ 그 함수안에
if문이 있고 그 안에 int Index=Partition(DataSet, Left, Right); 이라고 있고, 그 아래
QuickSort(DataSet, Left, Index-1); --- 1
QuickSort(DataSet, Index+1, Right); ---2 라고 되어있는데요.. 제 머리로는 도저히 이해가 안가서요..
1번째 함수를 실행시킨 후, 재귀함수기 때문에 Index값을 리턴받고 다시 1번함수로 돌아가고.
계속 이렇게 되는데 2번함수는 도대체 언제 실행하게 되는거죠??.. 그리고 1번함수 반복하다가
Index값이 0이 나오는 경우, 1번함수에 매개변수가 -1로 가게 됩니까??
책에있는 숫자 말고, {23, 16, 8, 7, 5, 45, 32, 17, 10, 3}으로 했는데, 실행화면에 끝에 45가 32보다 먼저나오구요..
소스를 보고 그림을 그리면서 분석을 하는데, 도저히 8이랑 7은 위치가 변할생각을 안하네요ㅠㅠ
어떻게 해결해야 좋을까요.. QuickSort함수 문제랑, 매개변수 문제, 그리고 정렬위치
이렇게 3가지만 답변해주시면 감사하겠습니다..