none
bsearch RRS feed

  • 질문

  • Windows mobile 에서 bsearch를 사용할 일이 있어서 찾아보던 중 이곳에도 코드를 올립니다.

    void * __cdecl bsearch ( const void *key, const void *base, size_t num, size_t width, int (__cdecl *compare)(const void *, const void *) )
    {
         char *lo = (char *)base;
         char *hi = (char *)base + (num - 1) * width;
         char *mid;
         unsigned int half;
         int result;

         while (lo <= hi)
         if (half = num / 2)
         {
         mid = lo + (num & 1 ? half : (half - 1)) * width;
         if (!(result = (*compare)(key,mid)))
         return(mid);
         else if (result < 0)
         {
         hi = mid - width;
         num = num & 1 ? half : half-1;
         }
         else {
         lo = mid + width;
         num = half;
         }
         }
         else if (num)
         return((*compare)(key,lo) ? NULL : lo);
         else
         break;

         return(NULL);
    }

    • 이동됨 Alicia CalesMicrosoft employee 2010년 4월 14일 수요일 오전 6:58 Forums Consolidation (이전 위치:Smart Devices Native C++ Development)
    2010년 1월 12일 화요일 오전 1:27