Binary_Search

2024. 12. 16. 18:02·내배캠/C++
bool binary_search(ForwardIterator first, ForwardIterator last, const T& value);

Binary_Search는 이진 탐색 알고리즘을 사용한다.

  • 데이터가 정렬되어 있어야 사용 가능하다.
  • 탐색 범위를 반씩 나누어 찾고자 하는 값이 포함된 범위를 좁혀나간다.
  • <algorithm> 헤더에 정의되어있다.

내부적인 구조를 간략하게 살펴보면

bool solution(int TargetNum) 
{
    int Start = 1;
    int End = 10;
    int Mid;

    while (Start <= End)
    {
        Mid = (Start + End) / 2;

        if (Mid == TargetNum) return true;

        if (Mid < TargetNum) Start = Mid + 1;
        if (Mid > TargetNum) End = Mid - 1;
    }
}

int main() 
{
    bool Answer = solution(7);

	return 0;
}

 이렇게 모든 범위를 선형적으로 다 탐색하지 않고, 범위를 줄여나가며 찾는 이진 탐색 기법을 활용함을 볼 수 있다.

탐색 범위를 절반씩 줄이기 때문에 데이터의 크기가 커져도 비교 횟수는 로그 스케일로 증가해 O(log n)의 시간 복잡도를 가지고, 만약 정렬을 해야한다면 추가적인 시간 복잡도 O(n log n)가 발생한다. 

탐색이 여러 번 수행되거나, 정렬된 데이터가 이미 주어진 경우라면 binary_search가 효율적이다.

'내배캠 > C++' 카테고리의 다른 글

Class  (0) 2024.12.23
set 과 unordered_set  (0) 2024.12.22
Key-Value 자료구조  (0) 2024.12.21
SQL  (0) 2024.12.02
Class의 개념  (0) 2023.11.30
'내배캠/C++' 카테고리의 다른 글
  • set 과 unordered_set
  • Key-Value 자료구조
  • SQL
  • Class의 개념
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (151)
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (16)
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    Binary_Search
    상단으로

    티스토리툴바