해당 내용은 프로그래머스 코딩테스트 광탈 방지 A to Z : JavaScript 강의를 공부하며 정리한 내용입니다.
정렬 되어있는 요소들을 반씩 제외하며 찾는 알고리즘
O(log n)만큼 시간복잡도가 걸린다.
실사용예시
비교 : 선형탐색
순서대로 하나씩 찾는 탐색 알고리즘 O(n) 시간복잡도가 걸린다.
1-2 이진 탐색 트리
이진 탐색을 위한 이진 트리로 왼쪽 서브 트리는 루트보다 작은 값이 모여있고 오른쪽 서브 트리는 루트보다 큰 값이 모여있다.
이진탐색트리의 문제점
=> 코테에서는 주로 이진 탐색 배열로만으로 푸는 문제가 대부분.
=> 이렇게 빠른 알고리즘은 거의 없다.
function binarySearch(array, findValue) {
let left = 0;
let right = array.length - 1;
let mid = Math.floor((left + right) / 2);
while (left < right) {
if (array[mid] === findValue) {
return mid;
}
if (array[mid] < findValue) {
left = mid + 1;
} else {
right = mid - 1;
}
mid = Math.floor((left + right) / 2);
}
return -1;
}