반응형
#이진검색 #바이너리서치 #이진탐색 #검색 #탐색 #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;
}
반응형
'C_C++ > 기초_알고리즘_문제' 카테고리의 다른 글
(C언어 재귀함수를 이용한 팩토리얼 구하기 (0) | 2022.11.19 |
---|---|
(C/C++) 병합정렬 Merge Sort (0) | 2022.11.19 |
(C언어) 소인수 분해 (0) | 2022.11.16 |
(기초 알고리즘) 최대공약수 구하기: 유클리드 호제법 (0) | 2022.11.16 |
(기초 알고리즘) 홀수인지 짝수인지 판단하기 (0) | 2022.11.09 |