gpt4 book ai didi

c - 这个K&R ch3的ex错了?

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:15 24 4
gpt4 key购买 nike

这样的代码,在第 44 页。

<p></p>

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

low = 0;
high = n - 1;
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;
}
printf("mid is %d\n",mid);
}

return -1;
}

int main(void)
{
int v[] = {2,3,4,7,8,23,54,65,76};
int ret = binsearch(7, v, sizeof(v)/sizeof(int));

printf("%d,ret is %d\n", sizeof(v),ret);
return 0;
}

编译运行,死循环!所以“low = mid + 1;”这一行应该取“low = mid;”,对吗?thx。

最佳答案

您发布的代码中的问题不是 low 的值,而是在测试 high 值的设置时 ... 如果 x小于v[mid],那么新的high索引值应该小于1,不能大于mid。所以你想改变以下内容:

if(x < v[mid]){
high = mid + 1;

到:

if(x < v[mid]){
high = mid - 1;

您可以在此处查看工作示例:http://ideone.com/E6Ma8

关于c - 这个K&R ch3的ex错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12644192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com