Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 군내
- 개발자
- Flutter
- 행렬
- Eigenvalue
- 자바
- 군간
- 논리회로 #컴퓨터
- 선형대수학
- 알고리즘
- 일반화오차
- 앱
- Java
- 비둘기집원리
- 평균로그우도
- qq플롯
- 최대우도법
- 우도함수
- 앱개발
- Eigenvector
- AIC
- 조건부정리
- f비
- ios
- 개발
- 잔차
- 상대 엔트로피
- Android
- 파스칼삼각형
- jfield
Archives
- Today
- Total
Dev_bob
[알고리즘 개념]이진 탐색 알고리즘(Binary Search) 본문
이진탐색은 정렬된 배열에서 특정 값을 찾는 알고리즘입니다.
이진탐색 알고리즘 구현 로직은 다음과 같습니다.
배열의 중간 요소를 검사하고 목표값이 중간 값과 비교하여 검색 범위를 절반으로 줄여가며 작동합니다.
시간복잡도:O(log n)
이진탐색 알고리즘은 반복문을 통한 이진 탐색과 재귀 함수를 사용한 이진 탐색이 있습니다.
반복문을 통한 이진탐색
def binary_search_iterative(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# 예제 사용법
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 7
result = binary_search_iterative(arr, target)
if result != -1:
print(f"값 {target}은(는) 인덱스 {result}에 있습니다.")
else:
print(f"값 {target}을(를) 배열에서 찾을 수 없습니다.")
재귀함수를 이용한 이진탐색
def binary_search_recursive(arr, target, left, right):
if left > right:
return -1
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binary_search_recursive(arr, target, mid + 1, right)
else:
return binary_search_recursive(arr, target, left, mid - 1)
# 예제 사용법
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 7
result = binary_search_recursive(arr, target, 0, len(arr) - 1)
if result != -1:
print(f"값 {target}은(는) 인덱스 {result}에 있습니다.")
else:
print(f"값 {target}을(를) 배열에서 찾을 수 없습니다.")
이진탐색 로직
입력
1. 배열을 정렬합니다.(arr.sort())
2. target(찾는 값을 입력)을 받습니다.
이진탐색 함수
left 값 = 0
right 값= len(arr)-1
반복문 : left<=right 일때 까지 반복
중간값 구하기->mid(중간값)==(left+right)//2
케이스 나누기
중간값=target값 : mid 값 반환
arr[mid]<target: 중간 값이 타겟 값보다 작다면
left=mid+1
arr[mid]>target:중간 값이 타겟 값보다 크다면
right=mid-1
'알고리즘 > 알고리즘 개념' 카테고리의 다른 글
[알고리즘 개념] BFS (1) | 2024.05.18 |
---|---|
[알고리즘 개념] DFS (2) | 2024.05.09 |