[알고리즘 전략] 이분탐색

2024. 11. 3. 18:42·알고리즘
728x90
반응형

** [한권으로 합격하는 취업 코딩테스트] 책을 참고해 작성했습니다.

** 주의점, 기억해야할 것을 위주로 작성합니다. 

 

선형 탐색 Linear Search 

 

- 순차탐색의 다른 말 

- 배열에 여러 값들을 넣어 두고, 그 중에서 어떤 값을 찾을 때 반복문을 돌려 하나하나 비교하며 찾는 것 

- O(N)

 

이분 탐색 Binary Search 

 

- 탐색할 부분이 하나만 남을 때까지 탐색 범위를 줄여가는 방식 

- 조건: 정렬된 배열

- left = 0 , right = len(arr)-1, mid = (left + right) // 2로 하는 게 일반적. 

- arr[mid] > target 이면 왼쪽 탐색 (right = mid - 1) 

- arr[mid] < target 이면 오른쪽 탐색 (left = mid + 1) 로 설정해 진행한다. 

- O(logN)

* 파이썬 라이브러리 bisect 

from bisect import bisect_left, bisect_right 
arr = [2,3,6,6,6,10,12,15] 
l = bisect_left(a, 6) 
r = bisect_right(a, 6) 
print(r-l) # 3

- l: 탐색할 부분의 왼쪽 포인터/ h: 탐색할 부분의 오른쪽 포인터/ t: 목표 값

- bisect_left(l, t): 목표 값보다 같거나 큰, 첫번째 값의 위치 반환 

- bisect_right(l, t): 목표 값보다 큰, 첫번째 값의 위치 반환 

- bisect_right() - bisect_left() = 배열에 목표 값이 몇개가 있는지도 알 수 있다. 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘' 카테고리의 다른 글

[알고리즘 전략] 완전탐색  (0) 2024.10.26
[알고리즘 전략] python 기본 자료구조 정리  (0) 2024.10.25
[알고리즘/Python] 힙(Heap)  (0) 2024.10.18
[알고리즘/Python] 스택(Stack) /큐(Queue)  (1) 2024.10.18
[알고리즘 전략] 탐욕법(Greedy)/ DP(동적 계획법)  (3) 2024.10.16
'알고리즘' 카테고리의 다른 글
  • [알고리즘 전략] 완전탐색
  • [알고리즘 전략] python 기본 자료구조 정리
  • [알고리즘/Python] 힙(Heap)
  • [알고리즘/Python] 스택(Stack) /큐(Queue)
heeya16
heeya16
개발 공부 냠냠
  • heeya16
    개발자 희야
    heeya16
  • 전체
    오늘
    어제
    • 분류 전체보기 (105)
      • 코딩테스트 (66)
        • 프로그래머스 (38)
        • SWEA (2)
        • BAEKJOON (26)
      • 알고리즘 (7)
      • 자료구조 (19)
      • 프로젝트 (5)
      • 취업 주르륵 (2)
      • 데이터베이스 (0)
      • IT지식 (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1003
    10448
    10773
    10월
    10진수
    11047
    11399
    11403
    11866
    1449
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
heeya16
[알고리즘 전략] 이분탐색
상단으로

티스토리툴바