알고리즘/basic

binary search

자곰 2022. 2. 8. 08:49

정렬된 배열에서 주어진 요소의 인덱스를 찾는 알고리즘!

1. 왼쪽과 오른쪽 탐색 경계 l(left)과 r(right)을 각각 0과 끝 인덱스로 초기화하고 배열의 길이를 선언합니다.

2. while 루프를 사용하여 검색 하위 배열의 범위를 반복적으로 좁히고, Math.floor()를 사용하여 반으로 자르십시오.

3. 발견되면 요소의 인덱스를 반환하고, 그렇지 않으면 -1을 반환합니다.

참고: 배열의 중복 값은 고려하지 않습니다.

const binarySearch = (arr, item) => {
  let l = 0,
    r = arr.length - 1;
  while (l <= r) {
    const mid = Math.floor((l + r) / 2);
    const guess = arr[mid];
    if (guess === item) return mid;
    if (guess > item) r = mid - 1;
    else l = mid + 1;
  }
  return -1;
};