flowchart TD
A[Set left right bounds] --> B{left right}
B -- No --> C[Return not found]
B -- Yes --> D[Compute mid]
D --> E{arr mid target}
E -- Yes --> F[Return mid]
E -- No --> G{arr mid target}
G -- Yes --> H[left mid 1]
G -- No --> I[right mid 1]
H --> B
I --> B
sequenceDiagram
participant L as left
participant R as right
participant M as mid
L->>M: choose midpoint
M->>R: compare target
R-->>L: shrink range
loop until converged
L->>M: recompute mid
end
# [Binary Search 템플릿: 아키텍트 버전]# Use Case: 정렬된 배열에서 O(log N) 탐색# Components: Left, Right 포인터, Mid# Constraint: 배열이 정렬되어 있어야 함defbinary_search(arr,target):# 1. 초기화 (Initialization Layer)# - 탐색 범위 설정left,right=0,len(arr)-1# 2. 분할 루프 (Division Loop)# - 범위가 유효한 동안 반복whileleft<=right:# 3. 중간점 계산 (Mid Calculation)mid=(left+right)//2# 4. 비교 로직 (Comparison Logic)ifarr[mid]==target:returnmid# 발견elifarr[mid]<target:left=mid+1# 오른쪽 절반 탐색else:right=mid-1# 왼쪽 절반 탐색return-1# 찾지 못함