728x90
π binarySearch(μ΄μ§νμ)
μ λ ¬λ 리μ€νΈμμ μνλ νλͺ©μ μ°ΎκΈ°μ ν¨μ¨μ μΈ μκ³ λ¦¬μ¦μ΄λ€. μ΄μ§ νμμ κ°μ₯ λ§μ΄ μ¬μ©νλ κ²½μ°λ λ°°μ΄μμ μ΄λ€ νλͺ©μ μ°ΎμμΌ ν λμΈλ°, μλ₯Ό λ€μ΄ 1 ~ 100
κΉμ§μ λ²μμμ 37
μ΄λ μλ₯Ό μ°ΎμΌλ €λ©΄ 1λΆν° 100κΉμ§ 1μ© μ¦κ°νλ©° μμλλ‘ μ°Ύλ λ°©λ²μ΄ μμ§λ§, νμλ²μλ₯Ό 1/2
μ© μ€μ΄λ©΄μ μ°Ύλ λ°©λ²μ΄ μλ€. μμλλ‘ μ°Ύμ λλ μ΅μ
μ κ²½μ° 100
λ²μ μ°ΎμμΌ νμ§λ§ νμλ²μλ₯Ό λ°μ© μ€μ¬ μ°Ύμκ°λ€λ©΄ μ΅λ 7λ² λ§μ
μνλ κ°μ μ°Ύμ μ μλ€. μ΄μ§ νμμ μ½λλ‘ κ΅¬ννλ λ°©λ²μ λ€μκ³Ό κ°λ€.
// while
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let target = 3;
function binarySearch(arr, target){
let min = 0;
let max = arr.length - 1;
let cnt = 0;
while (min <= max){
cnt += 1;
let mid = Math.floor((min + max) / 2);
if (arr[mid] === target){
return "found!", cnt;
}else{
if (arr[mid] < target){
min = mid + 1;
}else{
max = mid - 1;
}
}
}
return "not found!";
}
728x90
// recursive
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let target = 3;
function binarySearch(start, end, arr, target){
if (start > end){
return "not found!";
}
let mid = Math.floor((min + max) / 2);
if (arr[mid] === target){
return "found!";
}else{
if (arr[mid] < target){
binarySearch(mid + 1, end, arr, target);
}else{
binarySearch(start, mid - 1, arr, target);binarty
}
}
}
reference
λ°μν
λκΈ