Trick or True
이진 탐색(Binary Search) 본문
이진 탐색은 정렬되어 있는 배열에서 탐색 범위를 절반씩 좁혀가며 원하는 값을 탐색하는 알고리즘이다. O(logN)의 시간복잡도를 가지며, 재귀 함수나 반복문으로 많이 작성한다.
재귀함수로 구현한 이진 탐색
function binarySearch(arr, target, start, end) {
if (start > end) {
return -1;
}
let mid = parseInt((start + end) / 2);
if (arr[mid] === target) {
return mid;
} else if (arr[mid] > target) {
return binarySearch(arr, target, start, mid - 1);
} else {
return binarySearch(arr, target, mid + 1, end);
}
}
while문으로 구현한 이진 탐색
function binarySearch(arr, target, start, end) {
while (start <= end) {
let mid = parseInt((start + end) / 2);
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) end = mid - 1;
else {
start = mid + 1;
}
}
return -1;
}'코딩테스트' 카테고리의 다른 글
| [JavaScript]문자열을 배열로 변환하는 방법 (1) | 2023.08.28 |
|---|---|
| 그리디 알고리즘 (0) | 2023.05.30 |
| 시간복잡도에 따른 소요 시간 (0) | 2023.04.04 |
| [JavaScript] 백준 2675번 : 문자열 반복에 필요한 함수들 (0) | 2023.04.02 |
| [JavaScript] 백준 배열 입력 처리하는 법 (0) | 2023.04.01 |
Comments