제목 : 11.9. 이분(이진) 검색 알고리즘, 이진 탐색, 이진 검색
    
    
        
            
                | 
                    글번호:
                 | 
                
                 | 
                
                    266
                 | 
            
            
                | 
                    작성자:
                 | 
                
                 | 
                
                    
                        레드플러스
                        
                        
                    
                 | 
            
            
                | 
                    작성일:
                 | 
                
                 | 
                
                    
                        2006/10/19 오전 2:18:51 
                    
                 | 
            
            
            
                | 
                    조회수:
                 | 
                
                 | 
                
                    
                        7315
                    
                 | 
            
            
        
     
 
    
	
	
    
	/*
이분(이진;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");
    }
}