이진 검색
이진 검색(binary search)은 요소가 오름차순 또는 내림차순으로 정렬된 배열에서 검색하는 알고리즘이다.
방법
- (정렬된) 배열의 중앙에 위치한 요소를 검색하여 원래 검색하려는 값과 크기를 비교한다.
- 만약 값이 크다면, 중앙값 다음 순서부터 끝까지 배열의 중앙 값을 찾는다. 그리고 원래 검색하려는 값과 비교한다.
- 그렇게 검색 범위를 한 번에 절반씩 좁혀나간다.
- 중앙값이 검색하려는 값과 일치하거나
- 검색 범위가 더 이상 없는 경우 알고리즘을 종료한다.
이진 검색은 검색을 반복할 때마다 검색 범위가 절반이 되므로 검색에 필요한 비교 횟수의 평균값은 log n 이다.
복잡도
알고리즘의 성능을 객관적으로 평가하는 기준을 복잡도라고 한다. 복잡도는 아래의 두 가지 요소를 가지고 있다.
- 시간 복잡도: 실행에 필요한 시간을 평가한 것.
- 공간 복잡도: 기억 영역과 파일 공간이 얼마나 필요한가를 평가한 것.
2개 이상의 복잡도로 구성된 알고리즘의 전체 복잡도는 차원이 더 높은 복잡도를 우선한다. 즉 전체 복잡도는 차원이 가장 높은 복잡도를 선택한다.
예를 들어 이진 검색법을 이용하면 검색할 요소의 범위를 절반씩 좁힐 수 있다. 이에 이진 검색 알고리즘의 복잡도를 구하면 아래처럼 O(log n)을 얻을 수 있습니다.
출처:
- 책 <자료구조와 함께 배우는 알고리즘 입문 자바편>
'프로그래밍-학습기록 > 알고리즘 & 자료구조' 카테고리의 다른 글
해시 테이블 (0) | 2021.01.05 |
---|---|
정렬되지 않은 배열에서 이진 검색과 선형 검색 속도 비교 (0) | 2020.07.14 |
책 없이 배우는 자료구조와 알고리즘 (0) | 2020.07.06 |
검색 알고리즘 (0) | 2020.06.09 |
클래스 (0) | 2020.06.08 |