我正在学习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
}
答案 0 :(得分:4)
当你写作时,你不会显示数组v
的声明或初始化:
我的主要是
int main() { binsearch(91, v[100], 100); return 0; }
如果v
是全局变量,则将使用全零来初始化它。符号v[100]
需要v
为至少101 int *
的数组,元素v[100]
需要指向至少为100 {{1}的数组这是按排序顺序。更有可能的是,你的意思和需要是这样的:
int
作为扩展练习,请考虑从程序的参数中寻找值而不是将91连接作为值。