-
이분검색(Binary Search)예전 글들/C, C++ 2010. 12. 23. 15:31반응형
알고리즘 책에 나와있는 pseudocode 참고
1. 문제: n개 키를 가진 정렬된 배열 S에 x가 있는지를 결정하라.
2. 입력: 양의 정수 n, 정렬된(비내림차순) 키의 배열 S(첨자는 1부터 n까지), 키 key
3. location, S에서 key가 있는 위치(만약 key가 S에 없으면 0)
소스
int location(int *s, int low, int high, int key)
{
int mid;
if( low > high )
return -1;
else
{
mid = (low + high)/2;
if( s[mid] == key )
return mid+1;
else if( s[mid] < key )
{
low = mid + 1;
return location(s, low, high, key);
}
else
{
high = mid - 1;
return location(s, low, high, key);
}
}
}void main()
{
int s[] = {10, 12, 13, 14, 18, 20, 25, 27, 30, 35, 40, 45, 47};
unsigned num;
int key, idx;num = sizeof(s)/sizeof(s[0])-1;
key = 10;
idx = location(s, 0, num, key);
if( idx == -1)
{
cout << "찾는 값이 없습니다." << endl;
}
else
{
cout << "찾는 값은 "<< idx << " 번째 입니다." <<endl;
}
}
반응형'예전 글들 > C, C++' 카테고리의 다른 글
C언어, C++ 이란 무엇인가 (0) 2011.02.11 합병정렬(MergeSort)_(1) (0) 2010.12.24 내가 못외우는 것들 중에 하나..sizeof()로 구한 데이터 타입별 크기 (0) 2010.12.23 [C++] 이런것도 되는군요 *this (0) 2010.09.24 new 너 정확히 뭐니? (0) 2010.09.18 댓글