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

03-3  이진 검색









                   이 절에서는 이진 검색법에 대해 살펴보겠습니다. 이 알고리즘을 적용하는 전제 조건은 데이
                   터가 키 값으로 이미 정렬(sort)되어 있다는 것입니다. 이진 검색은 선형 검색보다 좀 더 빠르
                   게 검색할 수 있다는 장점이 있습니다.




                   이진 검색

                   이진 검색(binary search)은 요소가 오름차순 또는 내림차순으로 정렬된 배열에서 검색하는 알
                   고리즘입니다.                                               정렬 알고리즘은 6장에서 살펴봅니다.


                   아래 그림에서 오름차순으로 정렬된 데이터에서 39를 검색하는 과정을 생각해 보겠습니다.

                   먼저 배열의 중앙에 위치한 요소인 a[5](31)부터 검색을 시작합니다.

                                    0   1   2   3    4   ❺    6   7    8   9    10
                                   5   7   15   28   29   31   39   58   68   70   95


                   검색하려는 값인 39는 중앙 요소(a[5])보다 큰 값입니다(뒤쪽에 존재). 그러므로 검색 대상을 뒤
                   쪽의 5개(a[6] ~ a[10])로 좁힐 수 있습니다. 그런 다음 검색 범위의 중앙에 위치한 요소인 a[8]

                   (68)이 원하는 값인지 확인합니다.

                                    0   1   2   3    4   5    6   7    ❽   9    10
                                   5   7   15   28   29   31   39   58   68   70   95


                   검색하려는 값인 39보다 큰 값입니다(앞쪽에 존재). 그러므로 검색 대상을 앞쪽의 2개(a[6] ~
                   a[7])로 좁힐 수 있습니다. 이제 검색해야 하는 대상은 2개입니다. 이때 두 요소의 중앙 요소는
                   39나 58 중 아무거나 선택해도 상관없지만 여기서는 앞쪽의 값 39를 선택하여 원하는 값인
                   지 확인합니다.

                      두 인덱스 6과 7의 중앙값은(6 + 7) / 2로 계산하여 6이 되기 때문입니다. 정수의 나눗셈은 나머지를 버립니다.


                                    0   1   2   3    4   5    ❻   7    8   9    10
                                   5   7   15   28   29   31   39   58   68   70   95






                   106   C 알고리즘
   101   102   103   104   105   106   107   108   109   110   111