ALGORITHM · 10 NODES

이진 탐색 알고리즘 순서도

정렬된 배열에서 가운데 값을 비교하고 탐색 범위를 절반으로 줄이는 이진 탐색을, 반복 조건과 실패 종료까지 한 장으로 정리했습니다.

플로우캔버스 대표 예시 · 2026년 9월 2일 작성·검토

이 템플릿으로 시작하기

이 순서도가 보여 주는 핵심

이진 탐색의 핵심은 “가운데 값과 목표값을 비교한 뒤, 답이 될 수 없는 절반을 버린다”는 것입니다. 순서도에서는 반복을 계속할 수 있는가, 정답을 찾았는가, 어느 절반을 남길 것인가를 각각 하나의 조건으로 분리했습니다. 그래서 코드의 if·while 구조와 실패 조건이 함께 보입니다.

전제 조건: 배열은 정렬되어 있어야 합니다

오름차순으로 정렬된 배열에서만 arr[mid] < target이면 오른쪽 절반을, 그렇지 않으면 왼쪽 절반을 버릴 수 있습니다. 정렬되지 않은 데이터에 같은 흐름을 적용하면 비교 결과만으로 목표값의 위치를 판단할 수 없습니다. 이 전제는 시작 노드 또는 메모 노드에 꼭 남기세요.

노드가 코드의 어느 부분인지

순서도코드 역할왜 필요한가
low ≤ high?while 조건남은 탐색 범위가 있는지 확인합니다.
mid 계산중간 인덱스 계산현재 범위를 둘로 나눕니다.
arr[mid] = target?성공 분기찾은 즉시 반복을 끝냅니다.
arr[mid] < target?방향 분기남길 절반을 결정합니다.
low/high 갱신반복 본문범위를 반드시 줄여 종료를 보장합니다.

작은 예로 따라가기

[3, 8, 12, 17, 24, 31, 42]에서 31을 찾는다고 해보세요. 처음 가운데 17은 목표보다 작으므로 low를 가운데 다음으로 옮깁니다. 남은 범위의 가운데 31은 목표와 같으므로 성공합니다. 매 반복마다 남은 후보가 절반가량 줄기 때문에 많은 데이터에서도 효율적입니다.

흔한 실수

  • low 또는 high를 갱신하지 않아 같은 범위를 계속 검사하지 않는지 확인합니다.
  • 목표값을 찾지 못했을 때의 -1 반환 경로가 있는지 확인합니다.
  • 배열 정렬 방향과 비교 조건이 서로 맞는지 확인합니다.
  • 중간값 계산에서 언어별 정수 나눗셈과 큰 수 처리 방식을 확인합니다.

점검 진행률: 0 / 4

순서도가 특히 유용한 이유

코드는 정확한 실행 방법을 표현하고, 순서도는 반복·분기·종료의 구조를 빠르게 검토하게 합니다. 구현 전에 이 순서도로 성공·실패·반복 경로가 모두 있는지 확인한 뒤 코드로 옮기면, 조건을 빠뜨리는 실수를 줄일 수 있습니다.