Page 232 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 232
21 }
22 } while(pl <= pr);
23
24 if(left < pr) quick(a, left, pr);
25 if(pl < right) quick(a, pl, right);
26 }
위의 실행 결과는 실습 6-9의 실행 결과와 같은 값을 입력한 경우를 나타낸 것입니다. 이 실행 결과에
서도 알 수 있지만 좀 더 구체적으로 알아보기 위해 배열을 그림 6C-1에 나타냈습니다.
0 1 2 3 4 5 6 7 8
5 8 4 2 6 1 3 9 7
0 1 2 3 4 5 6 7 8
5 3 4 2 1 6 8 9 7
0 1 2 3 4 5 6 7 8
1 3 2 4 5 6 7 9 8
0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
0 1
1 2
[그림 6C-1] 퀵 정렬에서 배열의 분할 과정
비재귀적인 퀵 정렬
05-2절에서는 recur 함수를 비재귀적으로 구현하는 방법을 알아보았습니다. 마찬가지로
quick 함수도 비재귀적으로 구현할 수 있습니다. 그 예가 실습 6-10입니다.
이 프로그램을 컴파일하려면 실습 4-1의 IntStack.h와 실습 4-2의 IntStack.c가 필요합니다. main 함수는 실습 6-9
를 참고하세요.
232 C 알고리즘