C++/summary

이진검색

gandus 2010. 4. 20. 15:16
이진검색 전에는 미리 asc 정렬이 필요하다.

1. 일단 로우 값 ~ 하이 값 의 중간값을 선택

2. 중간값이 34보다 작으면  다시 중간 값을 원래 중간 값 +1 로 재정의

3. 로우   - 하이가 값이 바뀌면 종료(탐색값이 없다.)




int binary_search(int list[], int n, int key)
{
        int low, high, middle;
        low = 0;
        high = n-1;
        while( low <= high ){       // 아직 숫자들이 남아있으면
                middle = (low + high)/2;    // 중간 요소 결정
                if( key == list[middle] )  // 일치하면 탐색 성공
                        return middle;
                else if( key > list[middle] )// 중간 원소보다 크다면
                        low = middle + 1;    // 새로운 값으로 low 설정
                else
                        high = middle - 1;   // 새로운 값으로 high 설정
        }  
        return -1;
}