在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
二分查找,复杂度nlogn
bool Find(vector<vector<int>> array1, int target)
{int rowCount,colCount;
int mid=0;
rowCount = array1.size();
colCount = array1[0].size();
for(int i=0 ; i<rowCount ; i++)
{
int low = 0;
int high = colCount - 1;
// int mid;
while(low <= high)
{
mid = (low + high)/2;
if(target == array1[i][mid])
return true;
else if(target < array1[i][mid])
{
high = mid -1;
}
else if(target > array1[i][mid])
{
low = mid+1;
}
}
}
return false;//必须放在最外层,否则可能造成没有输出(编译通不过)
}