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 알고리즘
   227   228   229   230   231   232   233   234   235   236   237