<사업부>
이진 검색은 효율적인 — 복잡도 추정치는 O(log2(n))
인 반면, 기존 순차 검색은 O(n)
입니다. 즉, 예를 들어 1024개 요소의 배열에 대해 선형 검색은 최악의 경우 원하는 요소가 배열에 없을 때 모든 1024개 요소를 처리합니다. 이진 검색은 \(log_2(1024) = 10\) 요소를 처리하기에 충분합니다. 이 결과는 루프의 첫 번째 단계 이후 검색 영역이 512개 요소로 좁혀지고 두 번째 – 최대 256 등
이 알고리즘의 단점은 데이터 순서 지정에 대한 요구 사항과 일정한(데이터 양과 무관한) 시간에 모든 데이터 요소에 액세스할 수 있는 기능입니다. 따라서 이 알고리즘은 순서가 지정되지 않은 배열 및 연결된 목록을 기반으로 하는 모든 데이터 구조에서 작동할 수 없습니다.
구현
안녕 (오른쪽 – 왼쪽 > 1) // 오른쪽 테두리가 왼쪽의 오른쪽에 있는 한
NC
가운데 = (왼쪽 + 오른쪽) /< /span> 2; // 검색 영역의 중간
if (A[middle] >= b) 그렇다면
오른쪽 = 가운데; // 오른쪽 테두리 이동
그렇지 않으면
왼쪽 = 가운데; // 그렇지 않으면 왼쪽 테두리를 이동
참조
if (A[right] == X) then
오른쪽 출력;
그렇지 않으면
출력 -1;
위치:
A
- 소스 배열,
N
- 배열 크기,
X
- 원하는 숫자.