728x90
문제
오름차순 정렬된 정수의 배열(arr)과 정수(target)를 입력받아 target의 인덱스를 리턴해야 합니다.
입력
let output = binarySearch([0, 1, 2, 3, 4, 5, 6], 2);
console.log(output); // --> 2
output = binarySearch([4, 5, 6, 9], 100);
console.log(output); // --> -1
const binarySearch = function (arr, target) {
// TODO : 여기에 코드를 작성합니다.
let low = 0 // 첫번째 인덱스
let high = arr.length - 1 // 마지막 인덱스
while(low <= high){
let mid = Math.floor((low + high) / 2) //중간값
if(arr[mid] === target){
return mid
}else if(arr[mid] < target){ //target의 중간값보다 크면
low = mid + 1 // low를 업데이트 해주고 while문을 다시 돌아가게 함
// [0,1,2,3,4,5] 중 4인 경우 mid는 2 low는 0 -> 3으로 업데이트 된다.
}else{
high = mid - 1// high를 업데이트 해주고 while문을 다시 돌아가게 함
// [0,1,2,3,4,5] 중 1인 경우 mid는 2 high는 5 -> 1으로 업데이트 된다.
}
}
return -1
};
728x90
'코플릿 > toyproblem' 카테고리의 다른 글
toy problem 13 (0) | 2021.10.29 |
---|---|
toy problem 12 (0) | 2021.10.29 |
toy problem 11 (0) | 2021.10.28 |
toy problem 08 (0) | 2021.10.28 |
toy problem 07 (0) | 2021.10.28 |