정렬된 리스트에서 사용되는 탐색 알고리즘이다.
리스트에서 탐색 범위를 절반씩 줄이며 특정한 값을 찾을 때 사용한다.
.indexOf()
와 같은 기존 메서드 보다 속도가 빠르고 효율적이라는 장점이 있다.
✍ 설명
function binarySearch(arr, target) { let left = 0; let right = arr.length - 1; while (left <= right) { let middle = Math.floor((left + right) / 2); if (target < arr[middle]) { right = middle - 1; } else if (target > arr[middle]) { left = middle + 1; } else { return middle; } } return -1; } console.log(binarySearch([1, 2, 3, 9, 12, 52, 64], 12));
const num = [1, 2, 3, 9, 12, 52, 64]
배열이 있고 찾을 값이12
라면 중간 값9
와 비교하여 찾을 값이 더 크기 때문에 9 이상인 우측12, 52, 64
를 또 반으로 나눠 중간 값인52
와 찾을 값12
를 비교하면서 값을 찾을 때까지 이 과정을 반복한다.