[ algorithm] 이진탐색을 해보자

포비·2024년 10월 7일

알고리즘

목록 보기
3/11
post-thumbnail
#include <stdio.h>

// 이진 탐색 함수
int binary_search(int arr[], int size, int target) {
    int left = 0;
    int right = size - 1;

    while (left <= right) {
        int mid = left + (right - left) / 2; // 중간 인덱스 계산

        // 타겟을 찾은 경우
        if (arr[mid] == target) {
            return mid;
        }
        // 타겟이 중간 값보다 작은 경우
        else if (arr[mid] > target) {
            right = mid - 1;
        }
        // 타겟이 중간 값보다 큰 경우
        else {
            left = mid + 1;
        }
    }

    return -1; // 타겟이 배열에 없는 경우
}

int main() {
    int arr[] = {1, 3, 5, 7, 9, 11, 13, 15}; // 정렬된 배열
    int target = 5; // 찾고자 하는 값
    int size = sizeof(arr) / sizeof(arr[0]); // 배열 크기 계산

    int result = binary_search(arr, size, target);

    if (result != -1) {
        printf("타겟 %d은(는) 인덱스 %d에 위치합니다.\n", target, result);
    } else {
        printf("타겟이 배열에 없습니다.\n");
    }

    return 0;
}

이진탐색의 경우 생각보다 굉장히 간단하다.
대전제는 이진탐색의 경우 정렬이 된 상태여야 한다는 말이다.


이런식으로 이미 정렬이 완료된 배열이기때문에 절반을 똑 떼서
크면 아래로 작으면 위로가는 방식으로 계속 가다보면 찾을수있다.

profile
백이되고 싶은 곰입니다.

0개의 댓글