이분 탐색 Ex) 배열 1 3 4 7 8 13 17에서 '8'이 있는 위치를 찾는다고 가정
배열: 1 3 4 7 8 13 17
가운데 값인 7을 선택
1 3 4 7 8 13 17
7<8 이므로 더 큰 숫자가 있는 오른쪽으로 진행
7 8 13 17
7~17의 배열중 가운데인 13을 선택
7 8 13 17
13>8 이므로 더 작은 숫자가 있는 왼쪽으로 진행
7 8 13
7과 13의 가운데에 있는 8을 선언
7 8 13
8=8 이고 배열은 5번째이므로 답은 5
//헤더 부분
int solve(int,int);
//소스 부분
int A[500]; //총 500개까지 담을 수 있는 배열에서 탐색.
int k; //탐색할 값.
int solve(int s, int e);
{
int m;
while(e-s>=0)
{
m=(s+e)/2; 값이 있을 가능성이 있는 값의 가운데 값.
if(A[m]==k)
return m+1; //그 값이 만약 탐색할 값이면 그 위치를 리턴.
if(A[m]<k) s=m+1; //만약 A[m]이 작으면 좀 더 큰 값들이 있는 오른쪽이 탐색되도록 변경.
else e=m-1; //아까와 정반대.
}
return -1; //찾는 값이 없을 경우 -1을 준다.
}