C_C++/기초_알고리즘_문제

(C언어) 이진 검색(binary search)

고니자니 2022. 11. 18. 22:11
반응형

#이진검색 #바이너리서치 #이진탐색 #검색 #탐색 #2진검색

 

이진 검색(binary search)은 오름 차순으로 정렬되어 있는 데이터를 2등분하여, 앞쪽에 있는지 뒤쪽에 있는지 검색해 나가는 방법입니다.

 

이진검색 전제조건:

- 크기순으로 반드시 정렬되어 있을 것

 

*. 찾는 값이 47일 때

 

1.  데이터가 10개 일때(0~9번)

 

 

 

 

 

 

C언어: 이진 검색

#define _CRT_SECURE_NO_WARNINGS  // Visual Studio
#include <stdio.h>
#define N 10     

int main()
{
    int a[N] = { 1, 5, 8, 15, 30, 45, 47, 55, 80, 99 };
    int key, low, high, mid;
    int flag = 0;

    printf("탐색할 데이터는(1~100)? "); 
    scanf("%d", &key);

    low = 0; 
    high = N - 1;

    while (low <= high)
    {
        mid = (low + high) / 2;
        if (a[mid] == key) 
        {
            printf("%d: %d 번째에서 찾았습니다.\n", a[mid], mid);
            flag = 1;
            break;
        }

        if (a[mid] < key)
            low = mid + 1;
        else
            high = mid - 1;
    }

    if (flag != 1)
        printf("찾지 못했습니다.\n");

    return 0;
}

 

그림-이진검색.xlsx
0.01MB

 

반응형