๐ ์ ํ ํ์(Linear Search) : O(n)
- ์ฒซ๋ฒ์งธ Index๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ฆฌ์คํธ์ ๊ธธ์ด์ ๋น๋กํ๋ ์๊ฐ์ ์์ํ๋ค.
- ์ต์
์ ๊ฒฝ์ฐ ๋ชจ๋ ์์๋ฅผ ๋น๊ตํด์ผํ ์ ์๋ค.
- ์ฅ์
a. ๊ตฌํ์ด ์ฝ๋ค.
b. Target Value๊ฐ ๋ฆฌ์คํธ์ ์๋ถ๋ถ์ ์์ ๊ฒฝ์ฐ ํจ์จ์ ์ด๋ค.
- ๋จ์
a. ์์ ์๊ฐ์ด ๋ฆฌ์คํธ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ค.
b. ๋ฆฌ์คํธ์ ๊ธธ์ด๊ฐ ๊ธธ๊ฑฐ๋ Target Value๊ฐ ๋ท๋ถ๋ถ์ ์์ ๊ฒฝ์ฐ ๋นํจ์จ์ ์ด๋ค.
๐ ๊ตฌํ
def Linear_Search(List, Val):
i = 0
while i<len(List):
if List[i] == Val:
return i
i += 1
return -1
๐ ์ด์ง ํ์(Binary Search) : O(log n)
- ํ์ํ๋ ค๋ ๋ฆฌ์คํธ๊ฐ ์ด๋ฏธ ์ ๋ ฌ๋ ์ํ์ผ๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ํฌ๊ธฐ ์์๋๋ก ์ ๋ ฌ๋์ด ์๋ค๋ ์ฑ์ง์ ์ด์ฉํ๋ ๊ฒ
- ํ ๋ฒ ๋น๊ต๊ฐ ์ด๋ฃจ์ด์ง ๋๋ง๋ค ๋ฆฌ์คํธ๋ฅผ ๋ฐ์ฉ ์ค์ธ๋ค.
- ์ฅ์
a. ๋ฆฌ์คํธ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก Target Value๋ฅผ ํ์ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๋ ๋๋ฆฌ๊ฒ ์ฆ๊ฐํ๋ค.
b. ์ ๋ ฌ๋ ๋ฆฌํธ์ค์ ๊ธธ์ด๊ฐ ๊ธธ๊ฑฐ๋ Target Value๊ฐ ๋ฆฌ์คํธ์ ์ค์์ ์์นํ ๋ ์ ์ฉํ๊ธฐ ์ข๋ค.
c. ์ฌ๊ท๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋ค.
- ๋จ์
a. ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํด์ผ ํ๋ ์ถ๊ฐ ๋จ๊ณ๊ฐ ํ์ํ๋ค.
b. ์ ํ ํ์๊ณผ ๋น๊ตํ์์๋ ์๋์ ์ผ๋ก ๊ตฌํ์ด ๋ณต์กํ๋ค.
๐ ๊ตฌํ
def Binary_Search(List, Val):
lower = 0
upper = len(List) - 1
idx = -1
while lower <= upper:
middle = (lower + upper) // 2
if List[middle] == Val:
idx = middle
break
elif List[middle] < Val:
lower = middle + 1
else:
upper = middle - 1
return idx