이분 탐색

2023. 10. 23. 00:18· CS 기본/자료구조
목차
  1. 이분 탐색(binary Search)
  2.  
  3. 여기서 끝나면 아쉽다. 위 같은 경우는 쉽지만 이분 탐색 하면 항상 헷갈리는 조건들이 존재
  4. 위의 예시에서 생각해보자.

이분 탐색(binary Search)

  • 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법
  • 데이터가 정렬되어야지 사용할 수 있음.
  • 시간복잡도 O(log n)
  • start, mid, end 가 존재

ex) 17, 28, 43, 67 , 88, 92, 100 에서 43을 찾아보자

 

 

여기서 끝나면 아쉽다. 위 같은 경우는 쉽지만 이분 탐색 하면 항상 헷갈리는 조건들이 존재

 

요약

  1. [s, e]가 Check(s) != Check(e)가 되도록 구간을 설정
  2. while (s + 1 < e)동안 mid = (s + e) / 2에서 Check(mid) = Check(s)라면 s = mid, 아니라면 e = mid
  3. 구한 경계에서 답이 s인지 e인지 생각해보고 출력

(1에서 경계는 항상 [s, e] 내에 존재하고, 2에서 Check(s), Check(e)는 변하지 않으며, 3에서 s + 1 >= e이고, s < mid < e에서 s < e이므로 s + 1 == e를 만족합니다)

 

위의 예시에서 생각해보자.

 

 

참고

https://www.acmicpc.net/blog/view/109

 

이분 탐색(Binary Search) 헷갈리지 않게 구현하기

개요 이분 탐색은 off-by-one error가 발생하기 쉬워서 늘 헷갈립니다. 이분 탐색 문제를 풀다보면 탈출 조건으로 lo <= hi, lo < hi, lo + 1 < hi 중 어느 걸 선택해야 할 지, 정답이 lo인지 hi인지 (lo + hi) / 2

www.acmicpc.net

https://velog.io/@kimdukbae/%EC%9D%B4%EB%B6%84-%ED%83%90%EC%83%89-%EC%9D%B4%EC%A7%84-%ED%83%90%EC%83%89-Binary-Search

 

[알고리즘] 이분 탐색 / 이진 탐색 (Binary Search)

이진 탐색(이분 탐색) 알고리즘은 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법이다.이진 탐색은 배열 내부의 데이터가 정렬되어 있어야만 사용할 수 있는

velog.io

 

'CS 기본 > 자료구조' 카테고리의 다른 글

벨만 포드 알고리즘  (1) 2023.10.23
비선형 자료구조  (1) 2023.10.13
그래프 이론  (0) 2023.10.13
선형 자료 구조  (0) 2023.10.12
복잡도  (0) 2023.10.11
  1. 이분 탐색(binary Search)
  2.  
  3. 여기서 끝나면 아쉽다. 위 같은 경우는 쉽지만 이분 탐색 하면 항상 헷갈리는 조건들이 존재
  4. 위의 예시에서 생각해보자.
'CS 기본/자료구조' 카테고리의 다른 글
  • 벨만 포드 알고리즘
  • 비선형 자료구조
  • 그래프 이론
  • 선형 자료 구조
LTSGOD
LTSGOD
LTSGOD
TS's log
LTSGOD
전체
오늘
어제
  • 분류 전체보기 (138)
    • 언어 공부 (18)
      • C++ (6)
      • Python (12)
    • AI (39)
      • Numpy (2)
      • Pandas (5)
      • Pytorch (11)
      • Deep Learning (9)
      • CV (11)
      • 과제에서 얻은 것 (1)
    • 수학 (17)
      • 확률론 (8)
      • AI Math (9)
    • Spring (24)
      • 스프링입문 (8)
      • 스프링 원리 - 기본편 (5)
      • 스프링부트와 AWS로 혼자구현하는 웹 서비스 (10)
      • JPA (1)
      • spring MVC (0)
    • CS 기본 (25)
      • 네트워크 (5)
      • OS (4)
      • 자료구조 (9)
      • DB (7)
    • Git (2)
    • 백준 (1)
    • 활동 (8)
      • 2023 겨울 (1)
      • 네이버 부스트캠프 AI Tech (7)
    • HTML,CSS (2)
    • 도커 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • BOOSTCAMP
  • 백준
  • Camper
  • 회고
  • AWS
  • 부스트캠프
  • AI Tech 5기
  • pytorch
  • 5기
  • 붓캠
  • AI
  • 후기

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
LTSGOD
이분 탐색
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.