問題描述:在一個二維數組中,每一行都按照從左到右的遞增順序排列,每一列都按照從下到上遞增的順序排列。請完成一個函數,輸入這樣的一個二位數組和一個整數,判斷數組中是否含有該數。
實例:下面二位數組,每行每列是遞增的,如果查找10,返回true;如果查找數字11,則返回false;
//matrix表示數組,row表示行,col表示列,key表示要查找數字
bool _Find(int *matrix,int row,int col,int key)
{
assert(matrix);
assert(row > 0);
assert(col > 0);
int _row=0;
int _col=col-1;
while(_row < row && _col >=0)
{
//數組右上角數字大於查找數字
if(matrix[_row * col + _col] > key)
_col--;
//數組右上角數字小於查找數字
else if(matrix[_row * col + _col] < key)
_row++;
//右上角數字等於查找數字
else
return true;
}
return false;
}