在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
在上面的二维数组中查找数字7。
如果从右上开始查找可以确定是否可能在这一列,进而确定行。
bool Find(int *matrix, int rows, int columns, int num)
{
bool found = false;
if(matrix != NULL && rows > 0 && columns > 0)
{
int row =0;
int column = columns -1;
while(row < rows && column >= 0)
{
if(matrix[row * columns + column] == num)
{
found = true;
break;
}
else if(matrix[row * columns + column] > num)
{
--column;
}
else
++row;
}
}
return found;
}
从左下角开始:
bool Find(int* matrix, int rows, int columns, int num)
{
bool found =false;
if(matrix != NULL && rows > 0 && cloumns > 0)
{
int row = rows - 1;
int cloumn = 0;
while(cloumn < cloumns && row >= 0)
{
if(matrix(row * cloumns + cloumn) == num)
{
found = ture;
break;
}
else if(matrix(row * cloumns + cloumn) < num)
{
++cloumn;
}
else
--row;
}
}
return found;
}