【发布时间】:2021-05-01 15:34:28
【问题描述】:
我必须在 C 中运行代码。该代码为二进制搜索创建了一个函数。所以它只是读取一个数组大小的数字和一个数字 x 并返回它在数组上的位置。代码是:
long int binary(long int v[], long int n, long int x){
long int low = 0, high = n-1, mid;
while(low<=high){
mid = (high+low)/2;
if(x<v[mid]){
high = mid - 1;}
else if(x>v[mid]){
low = mid + 1;}
else{
return(mid);}
}
return(-1);
}
我不知道我是否完全理解这一点。我的理解是:
如果 x 小于数组中间位置的数字,则将值更改为高。
如果 x 大于数组中间位置的数字,则将值更改为低。
如果 x 等于数组中位置 mid 上的数字,则结束函数并返回所需数字位置的 mid 值。
我认为我最终没有得到那个回报(-1)。这是否意味着代码找不到所需数字的位置并返回负值以表示有问题?
【问题讨论】:
-
"意思是.." 是的。
-
这里有一个如何不编码的好例子:不要编写,永远不要呈现未记录/未注释的代码。 (
The code creates a function …读起来有点搞笑 - 它实现一个函数。)
标签: c function return binary-search