정렬된 숫자 배열을 첫 번째 인수로, 검색 번호를 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.
배열에 검색 번호가 있으면 배열의 인덱스를 반환해야 하고, 그렇지 않으면 -1을 반환해야 합니다.
이진 검색 알고리즘을 사용하여 이 작업을 수행해야 합니다. 이진 검색 알고리즘은 기본적으로 단일 요소로 변환될 때까지 배열을 반으로 재귀적으로 나누는 분할 정복 알고리즘입니다.
이 경우 이진 검색 알고리즘에서는 배열 정렬이 필요합니다. 어느 부분을 나눌지 쉽게 결정할 수 있기 때문입니다.
예시
const arr = [-3, -1, 4, 7, 9, 11, 14, 22, 26, 28, 36, 45, 67, 78, 88, 99]; const binarySearch = (arr = [], num) => { let l = 0; let r = arr.length - 1; while(l <= r){ const mid = Math.floor((l + r) / 2); if(num == arr[mid]){ return mid; } else if(num < arr[mid]){ r = mid - 1; } else{ l = mid + 1; }; }; return -1 }; console.log(binarySearch(arr, 22)); console.log(binarySearch(arr, 56)); console.log(binarySearch(arr, 11));
출력
콘솔의 출력은 -
7 -1 5