- 論壇徽章:
- 0
|
下面是的簡單算法可能查到值,但是得構(gòu)造想應(yīng)的結(jié)構(gòu),有點繁瑣
- #include <stdio.h>
- int bin_search_le(int *p, int len, int dst)
- {
- int low = 0;
- int mid = 0;
- int high = len - 1;
- if (p == NULL || len <= 0 || dst < p[0])
- return -1;
- while (low <= high) {
- mid = (low + high) / 2;
- if (dst == p[mid]) {
- return mid;
- }
-
- if (dst < p[mid]) {
- high = mid - 1;
- } else {
- low = mid + 1;
- }
- }
- return high;
- }
- int main(void)
- {
- int array[] = { 1, 2, 4, 5, 6, 9, 11, 20 };
- int ret;
- int dst;
- dst = 3;
- ret = bin_search_le(array, sizeof(array) / sizeof(array[0]), dst);
- printf("Search %d, find array[%d] = %d\n", dst, ret, array[ret]);
- return 0;
- }
復(fù)制代碼 |
|