【发布时间】:2020-02-08 15:06:22
【问题描述】:
我被困在一个简单而疯狂的搜索算法中。我想从调用函数的数组中找到元素的索引。问题是虽然元素已经存在,但函数返回-1;仅当元素不存在时才应该返回。 这是代码:
#include <iostream>
using namespace std;
int search(int arr[], int size, int val, bool left) {
int res;
for (int i = 0; i < size; i++) {
if(val == arr[i]) {
res = i;
break;
}
else if(val != arr[i]) {
res = -1;
}
}
return -1;
}
int main() {
int arr[] = {1, 4, 6, 5, 2, 7, 10, 4};
int size = sizeof(arr) / sizeof(arr[0]);
cout << search(arr,size,6, true) << endl;
return 0;
}
提前致谢。
【问题讨论】:
-
也许
break应该是return ...... -
你应该返回
res,而不是-1... -
你需要返回 res 而不是 -1
-
请注意,每次测试失败时都会执行 for 循环中的 else,一次又一次地分配 -1。您可以通过在循环之前使用 -1 初始化
res并删除 else 来更有效地完成此操作。 -
你试过调试了吗?尝试用笔和纸手工执行您的算法。
标签: c++ arrays algorithm search