所以我正在尝试编写程序来查找一个元素是否存在于二维数组中或不使用二进制搜索。我将一个简单的排序数组作为测试用例。对于二维数组中甚至存在的任何目标值,它提示找不到元素,即我的二进制搜索函数总是返回 0.
例如,我采用了 target = 3,但它仍然是我的二进制搜索函数返回 0 或 false,并表示未找到该元素。
#include <iostream> using namespace std;
bool binarySearch(int arr[][4], int rows , int cols , int target) {
int s = 0;
int e = rows*cols - 1;
int mid = s + (e-s)/2;
while(s<=e)
{
int i = mid/cols;
int j = mid % cols;
if(arr[i][j] == target)
{
return true;
}
else if(arr[i][j] < target)
{
s= mid + 1;
}
else
{
e = mid -1;
}
mid = s + (e-s)/2;
}
return false;
}
int main () {
int arr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int target = 3;
int rows = 3;
int cols = 4;
bool flag = binarySearch(arr,target , rows , cols);
cout << flag <<endl;
if(flag)
{
cout << "element found" << endl;
}
else
{
cout << "not found" << endl;
} }