완전탐색은 가능한 모든 경우의 수를 전부 탐색하여 문제의 해를 찾는 방법입니다. 이 방법은 간단하고 확실하지만, 데이터의 크기가 커질수록 시간 복잡도가 급격히 증가합니다.
이분탐색은 정렬된 배열에서 특정 값을 찾는 알고리즘입니다. 중간 값을 기준으로 탐색 범위를 절반씩 줄여가며 빠르게 원하는 값을 찾습니다.
function permute(arr) {
const result = [];
function backtrack(current, remaining) {
if (remaining.length === 0) {
result.push([...current]);
return;
}
for (let i = 0; i < remaining.length; i++) {
current.push(remaining[i]);
backtrack(current, remaining.slice(0, i).concat(remaining.slice(i + 1)));
current.pop();
}
}
backtrack([], arr);
return result;
}
function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}