π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[μκ³ λ¦¬μ¦ μν νλ°μ§ λλ°μ§πΎ] μ΄μ§νμ λ³Έλ¬Έ
π©π» μ»΄ν¨ν° ꡬ쑰/Algorithm
[μκ³ λ¦¬μ¦ μν νλ°μ§ λλ°μ§πΎ] μ΄μ§νμ
μ§μ§μνμΉ΄ 2023. 6. 26. 13:20728x90
λ°μν
<λ³Έ λΈλ‘κ·Έλ μ½λ©λ¬Έ codingmoon λμ μ νλΈλ₯Ό μ°Έκ³ ν΄μ 곡λΆνλ©° μμ±νμμ΅λλ€ :-)>
=> κ°λ°μ νμ μκ³ λ¦¬μ¦ #3. μ΄μ§νμ μ½κ³ κ°λ¨νκ²
𫧠μ΄μ§νμ
: λΆν μ 볡 ν¨ν΄μ μ§ν₯νλ νμ μκ³ λ¦¬μ¦
: μΈν λ°°μ΄/λ°μ΄ν°κ° μ λ ¬λμ΄ μλ 쑰건νμ μ μ©λ¨
𫧠μ΄μ§νμ vs μ ννμ
μ΄μ§νμ | μ ννμ |
worst : O(log n) 맀ν μλ£λ₯Ό λ°μΌλ‘ λλ κ°λ©° νμ (μ νλ³΄λ€ λΉ λ¦) |
worst : O(n) μμ°¨μ μΈ νμ ν¨ν΄ |
μΈν λ°μ΄ν° μ λ ¬ λΆν μ 볡 μ ν |
μκ±°λ μ€κ° μ¬μ΄μ¦μ λ°μ΄ν°μ μ μ μ |
𫧠μ΄μ§νμ μ리
1) L, M, (μ€κ° μ§μ ), R ν¬μΈνΈ μ€λΉ
2) λ°°μ΄μ M μκ° μ°Ύλ μ«μμ κ°λ€λ©΄ M 리ν΄
μΆμΈ‘ μ«μκ° μ°Ύλ μ«μλ³΄λ€ μλ€λ©΄ Lμ M + 1 μμΉλ‘ μ΄λ (μ’μΈ‘ μ«μλ€ νμμμ μ μΈ)
μΆμΈ‘ μ«μκ° μ°Ύλ μ«μλ³΄λ€ ν¬λ€λ©΄ Rμ M - 1 μμΉλ‘ μ΄λ (μ°μΈ‘ μ«μλ€ νμμμ μ μΈ)
3) λ°λ³΅
const num = [1, 5, 13, 17, 32, 39, 45, 50]
function binarySearch(arr: number[], target: number) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
let middle = Math.floor((left - right) / 2)
if (arr[middle] === target) {
// found!
return middle
} else if (arr[middle] < target) {
left = middle + 1
} else if (arr[middle] > target) {
right = middle - 1
}
}
return -1;
}
binarySearch(nums, 45) // 6
binarySearch(nums, 55) // -1
728x90
λ°μν
'π©βπ» μ»΄ν¨ν° ꡬ쑰 > Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Comments