πΏ Data/λΆνΈμΊ ν
[TIL] 100. [μκ³ λ¦¬μ¦] νμ
Jayden1116
2022. 4. 6. 20:56
ν€μλ
- νμ
- μ ννμ
- μ΄μ§νμ
[μκ³ λ¦¬μ¦] νμ
- μλ£λ₯Ό νλμ© νμνλ μκ³ λ¦¬μ¦
- λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μλ λ¬Έμ λ₯Ό νμν΄μΌνλ€.
[νμ] μ ννμ(Linear Search)
- κΈ°λ³Έμ μΈ νμ μκ³ λ¦¬μ¦μΌλ‘ νλ²μ νλμ© μ°¨κ·Όμ°¨κ·Ό λͺ¨λ κ²μνλ κ²
def linear_search(arr, value):
for i in range(len(arr)):
if arr[i] == value:
return i
[νμ] μ΄μ§νμ(Binary Search)
- νμμ ν λ, λ°μ© μ€μ¬λκ°λ©΄μ νμ
- λ§μΉ μ λ€μ΄ κ²μμμ κ°μ΄λ° κ°μ λ§νλ©΄ μ μ μ’νλκ°λ λ°©μ
- λ¨, λ°μ΄ν°κ° μ΄λ―Έ μ λ ¬λ κ²½μ°μλ§ μλνλ€.
- O(logn)μ μκ°λ³΅μ‘λλ₯Ό κ°λλ€.(κ·Έλ£Ήμ 2κ°μ© λλλ©΄μ μ§ννκΈ° λλ¬Έ)
def binary_search(arr, value):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == value:
return mid
elif arr[mid] < value:
low = mid + 1
else:
high = mid - 1
return 'μΈλ±μ€ μμ' # κ°μ μ°Ύμ§λͺ»ν κ²½μ°