'bsearch'에 해당되는 글 1건

  1. 2013.02.15 bsearch 함수 사용법.

표준 검색 함수 : 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 함수 대신 값의 비교 기능 함수 만들어서 코딩.



Posted by scii
: