K& R二进制搜索代码

时间:2014-12-27 00:39:53

标签: c binary-search

我正在学习K& R.他为特定函数(二进制搜索)提供代码,但不为完整程序提供代码。除了main()之外我还需要运行什么呢?

// binsearch: find x in v[0] <= v[1] <= ... <= v[n-1]

#include <stdio.h>

int binsearch( int x, int v[], int n)
{
    int low, high, mid;

    low = 0;
    high = n - 1;
    while (low <= high) {
        mid = (low + high) / 2;
        if (x < v[mid])
            high = mid - 1;
        else if (x > v[mid])
            low = mid + 1;
        else //found match
            return mid;
    }
    return -1; //no match
}

1 个答案:

答案 0 :(得分:4)

当你写作时,你不会显示数组v的声明或初始化:

  

我的主要是int main() { binsearch(91, v[100], 100); return 0; }

如果v是全局变量,则将使用全零来初始化它。符号v[100]需要v为至少101 int *的数组,元素v[100]需要指向至少为100 {{1}的数组这是按排序顺序。更有可能的是,你的意思和需要是这样的:

int

作为扩展练习,请考虑从程序的参数中寻找值而不是将91连接作为值。