티스토리 툴바

시간을 기록하다

블로그 이미지
by 기록자
  • 28,673Total hit
  • 6Today hit
  • 9Yesterday hit

앞서 순차 탐색에 대해 간단하게 알아 보았는데 탐색 속도가 만족할만한 수준이 아니었다.
그러므로 이번에는 평균 탐색 속도가 순차 탐색에 비해 월등히 좋은 이진 탐색에 대해 알아보도록 하겠다.

이진 탐색은 기본적으로 데이터가 정렬되어 있는 상태여야 한다.
데이터가 정렬 되어 있다면 탐색시에 상당히 효율적으로 이용할 수 있다.
이진 탐색에서는 정렬된 데이터의 범위를 1/2, 1/4, 1/8, ... 이런 방식으로 찾는 범주를 반씩 줄여 나간다.
찾는 위치의 데이터가 찾고자하는 값보다 작을 경우 그 바로 이전 위치까지가 다음에 찾게될 범주의 끝이 되고, 클 경우  그 위치의 다음 위치가 다음에 찾게될 범주의 시작이 되며, 같을 경우는 탐색을 중단하게 된다.
결국 이진 탐색을 이용할 경우의 시간 복잡도는 log n을 따르게 된다.
아래는 이진 탐색을 간략하게 표현한 그림이다.

사용자 삽입 이미지

이진 탐색

이진 탐색 방법은 이전에 포스팅했던 순차 탐색에 비해 탐색 성능면에서 상당히 월등하다고 할 수 있다.
하지만 이진 탐색을 위해서는 미리 정렬이 되어있어야 한다는 것을 염두해 두어야한다.
아래에는 이진 탐색에 대한 소스코드를 첨부하였다.
소스코드에는 이진 탐색을 위한 정렬 방법으로 선택 정렬을 사용하였다.


[자료구조와 알고리즘] - 순차 탐색(Sequential Search)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 0 AND COMMENT 1

ARTICLE CATEGORY

분류 전체보기 (42)
개발 노트 (1)
초보의 알고리즘 (17)
프로그래밍 팁 (13)
기타 등등등등등 (11)

CALENDAR

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

ARCHIVE

LINK