gpt4 book ai didi

c - 为什么我的二分搜索只能按此顺序处理 if 语句?

转载 作者:行者123 更新时间:2023-11-30 18:36:33 26 4
gpt4 key购买 nike

我想知道为什么我的二分搜索代码不能与此代码一起使用(它返回找到的所有内容):

int BinarySearch(int arr[], int len, int target) {
int first = 0;
int last = len-1;
int mid = (first+last)/2;
while (first <= last) {
mid = floor((first+last)/2);
if (target = arr[mid]) {
return 1;
} else if (target < arr[mid]) {
last = mid-1;
} else {
first = mid+1;
}
}
return -1;
}

但是下面的方法有效。唯一的区别是 while 循环中 if 语句的顺序。

int BinarySearch(int arr[], int len, int target) {
int first = 0;
int last = len-1;
int mid = (first+last)/2;
while (first <= last) {
mid = floor((first+last)/2);
if (arr[mid] < target) {
first = mid+1;
} else if (target = arr[mid]) {
return 1;
}
else { //arr[mid] < target
last = mid-1;
}
}
return -1;
}

最佳答案

if (target = arr[mid]) 

这是一个作业,而不仅仅是比较。它将使target等于arr[mid](然后进入 block ,除非值为0)。

关于c - 为什么我的二分搜索只能按此顺序处理 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40581696/

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