bsearch 함수 사용법.
Programming/C 2013. 2. 15. 03:05 |표준 검색 함수 : bsearch (binary search)
qsort 함수와 함께 유용하게 사용할 수 있는 bsearch 함수.
: bsearch 함수는 이진 검색 알고리즘을 구현한 함수이다. 간단히 말해서 원하는 데이터를 찾아주는 기능을 제공하는 함수이다. 다만 이진 검색 알고리즘은 "저장된 데이터가 정렬되어 있어야 한다.(오름차순으로) 그래서 qsort 함수와 더불어 유용하게 사용할 수 있다.
#include <stdlib.h>
void* bsearch(
const void* key, // 찾고자 하는 데이터가 저장되어 있는 주소 값.
const void* base, // 검색 대상이 되는 배열의 주소.
size_t count, // 배열 요소의 개수.(배열의 길이)
size_t size, // 배열 요소의 크기.
int (*compare)(const void*, const void*) // 값의 비교 기능 제공 함수.
);
검색 성공 시 검색 대상의 주소 값 반환, 검색 실패 시 NULL 반환.
((bsearch 함수는 검색의 대상이 오름차순으로 정렬되어 있을 것을 요구)
int compare(const void* key, const void* value)
{
if(key가 참조하는 값이 value가 참조하는 값보다 크다)
return "양수";
else if(key가 참조하는 값이 value가 참조하는 값보다 작다)
return "음수";
else // key가 참조하는 값과 value가 참조하는 값이 같다.
return 0;
}
이 함수는 bsearch 함수 내부에서 호출이 되는데, bsearch 함수의 첫 번째 전달인자가 이 함수의 첫 번째 전달인자가 된다. 이는 이 함수의 반환 값을 참조하여 찾고자 하는 데이터를 찾기 위해서다.
그리고 찾는 대상을 찾았을 때, 이의 주소 값을 반환하면서 bsearch 함수를 종료한다.
============================================================================================
strcmp 함수 대신 값의 비교 기능 함수 만들어서 코딩.
'Programming > C' 카테고리의 다른 글
문자열 컨트롤 함수 (strlen, strcpy, strcat, strstr, strchr, strtok, atoi 등..) (0) | 2013.02.15 |
---|---|
getchar 함수로 입력버퍼 비우는 사용 예. (0) | 2013.02.15 |
assert 문 사용하기 (0) | 2013.02.15 |
qsort 함수 사용법 (0) | 2013.02.15 |
qsort (Quick Sort) 함수. (0) | 2013.02.15 |