본문 바로가기
BEB/algorithm

toy10 binarySearch

by ddanss 2022. 11. 8.
728x90

[17, 28, 43, 67, 88, 92, 100]

이런식으로 있는 배열에서 43을 찾으려면

1. 가운데 값인 67과 43 비교

2. 43은 67보다 작으니 왼쪽 배열

3. [17, 28, 43] 에서 가운데 값은 28이니

4. 28과 43 비교

5. 43은 28보다 크니까 오른쪽 배열

6. [43] 찾음

const binarySearch = function (arr, target) {
  let low = 0;
  let high = arr.length - 1;
  let mid;

  while(low<=high) {
    mid = parseInt((low + high) / 2);
    if(arr[mid] === target) return mid;
    else if(arr[mid] > target) high = mid - 1;
    else low = mid + 1;
  }
  return -1;
};

let output = binarySearch([0, 1, 2, 3, 4, 5], 1);
console.log(output); // --> 2

output = binarySearch([4, 5, 6, 9], 100);
console.log(output); // --> -1
반응형

'BEB > algorithm' 카테고리의 다른 글

toy 12 treeBFS  (0) 2022.11.10
11 powerSet  (0) 2022.11.09
Toy8 - largestProductOfThree  (0) 2022.11.04
백트래킹  (0) 2022.11.03
Toy07 - tree dfs  (0) 2022.11.02

댓글