제목 : 11.9. 이분(이진) 검색 알고리즘, 이진 탐색, 이진 검색
글번호:
|
|
266
|
작성자:
|
|
레드플러스
|
작성일:
|
|
2006/10/19 오전 2:18:51
|
조회수:
|
|
6349
|
/*
이분(이진;Binary) 탐색법, 이분 검색 : 데이터가 정렬되어 있을 때 유효함
*/
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
#define N 5 //데이터 수
void main(void)
{
static int data[N] = { 21, 33, 35, 47, 59 }; // 정렬되어 있다고 가정
int key = 0; // 검색할 키(데이터) 저장
int low = 0; // 왼쪽 인덱스
int high = 0; // 오른쪽 인덱스
int mid = 0; // 가운데 인덱스 : N / 2
int flag = 0; // 참 또는 거짓
int cnt = 0; // 반복 횟수
printf("탐색할 데이터 : "); scanf_s("%d", &key);
low = 0; high = N - 1;
while (low <= high)
{
printf("%d번 반복....\n", ++cnt);
mid = (low + high) / 2; // 가운데 인덱스
if (data[mid] == key)
{
printf("%d는 %d 번째 인덱스에 있습니다.\n", data[mid], mid);
flag = 1;
break;
}
if (data[mid] < key) // 오른쪽 영역 탐색
{
low = mid + 1;
}
else // 왼쪽 영역 탐색
{
high = mid - 1;
}
}
if (flag != 1)
{
printf("찾을 수 없습니다.\n");
}
}