文章目录
思路
与一维数组的折半查找的思路相同,只是中间多了一维坐标与二维坐标之间的转换
代码
bool searchMatrix(int** matrix, int matrixSize, int* matrixColSize, int target) {
int low = 0, high = matrixSize * matrixColSize[0] - 1,mid,x;
//二分查找
while (low <= high) {
mid = (high - low) / 2 + low;
//一维坐标转二维坐标
x = matrix[mid / matrixColSize[0]][mid % matrixColSize[0]];
//向上折叠
if (x < target) {low = mid + 1;}
//向下折叠
else{
if(x > target){high = mid - 1;}
else{return true;}
}
}
return false;
}