Page 226 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 226

pl과 pr이 교차하면 그룹을 나누는 과정이 끝나고 배열은 아래처럼 두 그룹으로 나누어집니다.



                     피벗 이하의 그룹 : a[0], … , a[pl – 1]
                     피벗 이상의 그룹 : a[pr + 1], … , a[n – 1]



                   또 그룹을 나누는 작업이 끝난 다음 pl  pr + 1인 경우에는 다음과 같은 그룹이 생길 수 있습

                   니다.


                     피벗과 일치하는 값을 가지는 그룹 : a[pr + 1], … , a[pl – 1]



                   앞의 예에서는 피벗과 일치하는 값을 가지는 그룹이 만들어지지 않았습니다. 그림 6-20은 피
                   벗과 일치하는 값을 가지는 그룹이 만들어지는 예입니다.  a  는 초기 상태이고 피벗의 값은

                   5입니다.

                         pl                                   pr
                           0   1   2   3    4   5    6   7    8
                    a     1   8    7   4    5   2    6   3    9

                              pl                         pr
                    b     1   8    7   4    5   2    6   3    9


                                   pl           pr
                    c     1   3    7   4    5   2    6   8    9


                                            pl
                                            pr
                    d     1   3    2   4    5   7    6   8    9



                                                pl
                                       pr
                    e     1   3    2   4    5   7    6   8    9
                              피벗 이하
                                                     피벗 이상
                                         피벗과 일치
                            왼쪽 그룹        가운데 그룹     오른쪽 그룹
                          [그림 6-20] 피벗과 같은 값을 가지는 그룹이 생긴 경우


                    b ,  c ,  d 는 왼쪽 커서, 오른쪽 커서가 피벗 이상, 피벗 이하의 요소를 찾아 멈춘 단계입니다.

                   그림  d 는 pl, pr이 동일한 요소 a[4] 위에 있습니다. 이때 동일한 요소인 a[4]와 a[4]를 교환합



                   226   C 알고리즘
   221   222   223   224   225   226   227   228   229   230   231