从数组中搜索元素的索引

时间:2019-10-11 06:19:39

标签: c++ arrays algorithm search

我被困在一个简单而疯狂的搜索算法中。我想从调用函数的数组中找到元素的索引。问题是尽管元素已经存在,但函数返回-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;
}

先谢谢了。

2 个答案:

答案 0 :(得分:0)

尝试从函数返回 res

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int search(int arr[], int size, int val, bool left) {
  int res = -1;
  for (int i = 0; i < size; i++) {
    if(val == arr[i]) {
      res = i;
      break;
    }
  }
  return res;
}

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;
}

答案 1 :(得分:0)

for (int i = 0; i < size; i++) {
if(val == arr[i]) {
res = i;
break;
}
else if(val != arr[i]) {
res = -1;
}
}
return -1;

即使存在该元素,您也将在for循环之外返回-1。

为循环初始化上面的res变量并返回它    res = -1

for循环之后

return res