μ΄μ§ νμ(Binary Search) β
μ μ β
μ λ ¬λ λ°°μ΄μ μ€μμ μμΉν μμμ λΉκ΅ λνμ΄.
νμ λ°©λ² β
λ°°μ΄μ μ€μμ μλ κ°μ μ‘°μ¬νμ¬ μ°Ύκ³ μ νλ νλͺ©μ΄ μΌμͺ½ λλ μ€λ₯Έμͺ½ λΆλΆ λ°°μ΄μ μλμ§λ₯Ό μμλ΄μ΄ νμμ λ²μλ₯Ό λ°μΌλ‘ μ€μΈλ€.
쑰건 β
μ΄μ§ νμμ κΈ°λ³Έμ μΌλ‘ λ°°μ΄μ΄ μ λ ¬λμ΄μμμ μμΉμΌλ‘νλ€.
μ΄μ§νμμ ꡬνν λ μ λ ¬λ λ°°μ΄μ μ€μ μΈλ±μ€μ κ°μ΄ μ΄λ€ κ°κ³Ό μ΄λ»κ² λΉκ΅ν κ²μΈκ°κ° μ€μνλ€. μ΄κ²μ μ£Όμ΄μ§ λ¬Έμ μλ°λΌ λ¬λΌμ§κΈ°λλ¬Έμ λ¬Έμ λ₯Ό μ½κ³ μ΄ν΄νλ€μ left
μ right
κ° μ΄λλ‘ ν₯ν κ²μΈκ°λ₯Ό λ¨Όμ μκ°νκ³ κ΅¬ννλ κ²μ΄ μ€μνλ€.
μ½λ β
1~10μ΄ λ€μ΄μλ λ°°μ΄μμ targetμ μ°Ύλ λ‘μ§μ΄λ€.
ts
binarySearch([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 7)
function binarySearch(arr: number[], target: number) {
let [left, right] = [0, arr.length]
while (left < right) {
const mid = Math.floor((left + right) / 2)
if (arr[mid] < target) left = mid + 1
else right = mid
}
console.log('left :: ', left, ', arr[left] :: ', arr[left])
console.log('right :: ', right, ', arr[right] :: ', arr[right])
}
// left :: 6 , arr[left] :: 7
// right :: 6 , arr[right] :: 7