Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

검색된 숫자가 있는 경우 인덱스를 반환하는 JavaScript에서 이진 검색 구현

<시간/>

정렬된 숫자 배열을 첫 번째 인수로, 검색 번호를 두 번째 인수로 취하는 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