์ด๋ถ ํ์ ์ด๋?
- ์ด๋ถ ํ์ / ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ์ "์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ๋ฆฌ์คํธ"์์ ํน์ ํ ๊ฐ์ ์์น๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ์ฒ์๋ถํฐ ๋๊น์ง ์์๋๋ก ํ์ ํ๋ ๊ฒ๋ณด๋ค ๋น ๋ฅด๊ฒ ํ์ํ ์ ์๋ค!
ํ์ ๋ฐฉ๋ฒ
- ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ๋ค.
- start = 0, end = n์ผ๋ก ์ค์ ํ๋ค.
- mid = ( start + end ) // 2
- ๊ตฌํ๋ ์ซ์์ mid ๋ฅผ ๋น๊ตํ๋ค.
- ๊ตฌํ๋ ์ซ์๋ณด๋ค mid๊ฐ ํฌ๋ค๋ฉด start = mid +1, mid๋ณด๋ค ์๋ค๋ฉด end = mid - 1
- start < end๊ฐ ๋ ๋๊น์ง 3 ~ 5์ ์์๋ฅผ ๋ฐ๋ณตํ๋ฉฐ ์ซ์๋ฅผ ํ์
์๋์ ๊ทธ๋ฆผ์ 0 ~ 100 ์ฌ์ด์์ 78์ ํ์ํ๋ ๊ณผ์ ์ด๋ค.
์ด๋ถ ํ์ ์ฝ๋ (Python)
def binary_search(array, target):
start = 0
end = len(array) - 1
while start <= end:
mid = (start + end) // 2
if array[mid] == target:
return True
elif array[mid] > target:
end = mid - 1
else:
start = mid + 1
return False
sample_array = [1, 4, 5, 2, 6, 9, 3, 5]
target = 3
sample_array.sort()
result = binary_search(sample_array, target)
print("{} in array".format(target) if result else "{} not in array".foramt(target))
## 3 in array
'๐ค์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1684 - ๊ฐ์ ๋๋จธ์ง (0) | 2024.11.22 |
---|---|
[๋ฐฑ์ค] 1669 - ๋ฉ๋ฉ์ด ์ฐ๋ค๋ฌ๊ธฐ (0) | 2024.11.20 |
[์๊ณ ๋ฆฌ์ฆ] ์ด๋ชจ์ค๋ฒ (Imos Method) (0) | 2024.11.01 |
[์๊ณ ๋ฆฌ์ฆ] ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2024.10.13 |
[์๊ณ ๋ฆฌ์ฆ] - ๋ฐฐ๋ญ๋ฌธ์ (Knapsack Problem) (0) | 2024.09.03 |