선형검색과 다르게 이진검색은 특정 조건에 정렬되어있어야 하지만 선형검색 보다 효율성이 높다.
다음과 같이 이진 검색을 작성해 보았다.
function binarySearch(arr, elem) { let start = 0; let end = arr.length - 1; let middle = Math.floor((start + end) / 2); while(arr[middle] !== elem && start <= end) { if(elem < arr[middle]){ end = middle - 1; } else { start = middle + 1; } middle = Math.floor((start + end) / 2); } return arr[middle] === elem ? middle : -1; }
주의할 점으로는 while문의 start값이 end값을 넘어가는 경우 무한 루프에 빠지게 되므로
두번째 조건을 꼭 달아야 한다.