이진탐색 알고리즘

2023. 5. 18. 11:03·C#
반응형

소개

이진탐색 알고리즘은 정렬된 배열에서 특정 값을 찾는 데 사용되는 검색 알고리즘 중 하나입니다. 이번 글에서는 이진탐색 알고리즘을 자세히 살펴보고, C#스크립트로 예시를 작성해보겠습니다.

이진탐색 알고리즘이란?

이진탐색 알고리즘은 배열의 중간 값을 선택하여 찾고자 하는 값과 비교합니다. 만약 선택한 값이 찾고자 하는 값보다 크다면, 배열의 왼쪽 절반에 대해서 이진탐색을 반복합니다. 선택한 값이 찾고자 하는 값보다 작다면, 배열의 오른쪽 절반에 대해서 이진탐색을 반복합니다. 이 과정을 반복하여 찾고자 하는 값을 찾을 때까지 수행합니다.

이진탐색 알고리즘의 예

다음은 이진탐색 알고리즘의 예시입니다.

static int BinarySearch(int[] arr, int target)
{
    int left = 0;
    int right = arr.Length - 1;

    while (left <= right)
    {
        int mid = left + (right - left) / 2;

        if (arr[mid] == target)
        {
            return mid;
        }
        else if (arr[mid] < target)
        {
            left = mid + 1;
        }
        else
        {
            right = mid - 1;
        }
    }

    return -1;
}

위의 예제는 정렬된 배열에서 특정 값을 찾는 이진탐색 알고리즘입니다. BinarySearch() 메서드는 배열과 찾고자 하는 값(target)을 매개 변수로 받습니다. left와 right 변수는 배열의 처음과 끝 인덱스를 가리킵니다. 이진탐색 알고리즘은 left와 right의 중간 값을 선택하여 찾고자 하는 값과 비교합니다. 만약 선택한 값이 찾고자 하는 값보다 크다면, left를 mid+1로 업데이트합니다. 선택한 값이 찾고자 하는 값보다 작다면, right를 mid-1로 업데이트합니다. 이 과정을 반복하여 찾고자 하는 값을 찾을 때까지 수행합니다.

이진탐색 알고리즘의 시간 복잡도

이진탐색 알고리즘의 시간 복잡도는 O(log n)입니다. 이는 배열의 크기가 2배씩 줄어들기 때문입니다.

결론

이진탐색 알고리즘은 정렬된 배열에서 특정 값을 찾는 데 사용되는 검색 알고리즘입니다. 이진탐색 알고리즘의 시간 복잡도는 O(log n)이며, 배열의 크기가 2배씩 줄어들기 때문입니다. 이번 글을 통해 이진탐색 알고리즘에 대해 더욱 자세히 알아보았습니다.

저작자표시 비영리 변경금지 (새창열림)

'C#' 카테고리의 다른 글

C# ? 연산자 : Null 조건부 연산자  (0) 2023.06.02
C# 배열 인덱싱  (1) 2023.06.01
C# DateTime  (0) 2023.05.16
C# Nullable<T>  (0) 2023.05.14
C#의 #region 지시어  (0) 2023.05.08
'C#' 카테고리의 다른 글
  • C# ? 연산자 : Null 조건부 연산자
  • C# 배열 인덱싱
  • C# DateTime
  • C# Nullable<T>
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (725)
      • 스마트팜 (0)
      • 상품 추천 (223)
      • MongoDB (4)
      • 하드웨어 (17)
      • 일기장 (4)
      • 파이썬 (130)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    Python
    스마트스토어리뷰
    devlife
    쇼핑몰리뷰
    라떼우유
    unity
    스크립트 실행
    list
    상품 리뷰 크롤링
    learntocode
    리뷰관리
    ipcamera
    카페24리뷰
    파이썬
    믈레코비타멸균우유
    긴유통기한우유
    C#
    셀레니움
    rtsp
    유니티
    카페24리뷰이관
    codingtips
    codingcommunity
    programmerlife
    cv2
    스크립트 실행 순서
    리스트
    appdevelopment
    programming101
    리뷰이관
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
이진탐색 알고리즘
상단으로

티스토리툴바