μƒˆμ†Œμ‹

μ•Œκ³ λ¦¬μ¦˜

[μ•Œκ³ λ¦¬μ¦˜] 이뢄 탐색

  • -
728x90

 

 

이진 검색 μ•Œκ³ λ¦¬μ¦˜μ΄λΌκ³ λ„ ν•œλ‹€

이뢄 탐색은 μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬λœ λ¦¬μŠ€νŠΈμ—μ„œ νŠΉμ • κ°’μ˜ μœ„μΉ˜λ₯Ό μ°ΎλŠ” μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€.

 

νŠΉμ • κ°’μ˜ μœ„μΉ λ₯Ό μ°ΎλŠ” 방법은

 

1. λ°°μ—΄μ—μ„œ 쀑간 μœ„μΉ˜λ₯Ό μ°Ύμ•„μ„œ

2. ν•΄λ‹Ή 값보닀 크닀면

3. 탐색 λ²”μœ„λ₯Ό λ‹€μ‹œ 쀑간값+1 λΆ€ν„° μ‹œμž‘ν•΄μ„œ λκΉŒμ§€ 재 νƒμƒ‰ν•˜λŠ” 것이닀.

 

 

쀑간 κ°’ = (μ‹œμž‘ μœ„μΉ˜ + λλ‚˜λŠ” μœ„μΉ˜) / 2

 

* μ›ν•˜λŠ” 값이 쀑간 값보닀 크닀면 쀑간값 λ‹€μŒ 자리인 7을 μ‹œμž‘μœ„μΉ˜λ‘œ λ‹€μ‹œ μ„€μ •ν•΄μ„œ(λ°°μ—΄ μœ„μΉ˜λ‘œλŠ” 4번째) 쀑간값을 λ‹€μ‹œ μ°Ύμ•„μ„œ νƒμƒ‰ν•œλ‹€.

 

* μ›ν•˜λŠ” 값이 쀑간 값보닀 μž‘λ‹€λ©΄ 쀑간값 μ•žμ˜ 자리인 3을 λλ‚˜λŠ”μœ„μΉ˜λ‘œ λ‹€μ‹œ μ„€μ •ν•΄μ„œ(λ°°μ—΄ μœ„μΉ˜λ‘œλŠ” 2번째) 쀑간값을 λ‹€μ‹œ μ°Ύμ•„μ„œ νƒμƒ‰ν•œλ‹€.

 

* 이 과정을 μ›ν•˜λŠ” 값이 쀑간 κ°’μœΌλ‘œ λ‚˜μ˜¬λ•ŒκΉŒμ§€ μ°ΎλŠ”λ‹€.

 

c++ μ½”λ“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//leftλŠ” μ‹œμž‘ μœ„μΉ˜ rifhtλŠ” λλ‚˜λŠ” μœ„μΉ˜ N은 λ°°μ—΄μ˜ κ°―수
int left = 0, right = N - 1;
 
//num은 μ°Ύκ³ μž ν•˜λŠ” μˆ«μž arr은 μ €μž₯된 λ°°μ—΄
while (left <= right) {
    mid = (left + right) / 2;        //쀑간값 κ³„μ‚°
    if (arr[mid] > num) {
        right = mid - 1;
    }
    else if (arr[mid] < num) {
        left = mid + 1;
    }
    else {
        //탐색 μ™„λ£Œ
        break;
    }
}
cs

 

 

 

λ°˜μ‘ν˜•
Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.