您的位置:首页 > 编程语言 > C语言/C++

c语言二分查找泛型实现

2014-07-22 22:14 218 查看
int intCmp(const void *lhs, const void *rhs)
{
int a = *(int*)lhs;
int b = *(int*)rhs;

if (a > b)
return 1;
else if (a == b)
return 0;
else
return -1;
}

int bSearch(void *array, const void *elem, const int elemSize, const int arraySize, int (*cmp)(const void *lhs, const void *rhs))
{
int left = 0;
int right = arraySize - 1;
while (left <= right)
{
int mid = (left + right)/2;
char *tmp = (char *)array;
int result = cmp(elem, tmp+mid*elemSize);
if (result == 0)
return mid;
else if (result > 0)
left = mid + 1;
else
right = mid - 1;
}
return -1;
}


实现中cmp回调实现是需要知道泛型的实际类型,可以用memcmp替换该函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: