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替换该函数。
相关文章推荐
- C语言调用库函数实现二分查找
- C语言实现 二分查找数组中的Key值(递归和非递归)
- 【二分查找】用C语言实现一个有序数组的二分查找
- 二分查找的递归和非递归算法(C语言实现)
- c语言实现二分查找
- 二分查找C语言实现
- 泛型实现二分查找
- C语言 ---- 递归实现二分查找
- c语言简单递归/非递归实现二分查找
- C语言实现折半查找(二分查找)的算法
- 顺序表查找(顺序查找、二分查找) C语言实现
- C语言编程中实现二分查找的简单入门实例
- c语言利用递归实现二分查找
- C语言实现:折半查找(二分查找)
- 使用泛型实现二分查找
- C语言实现二分查找
- C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
- C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
- 【C语言】编写函数实现二分查找
- Algorithm学习笔记 --- C语言实现二分查找