查找二维数组中的数,二维数组中每一行都按照从左到右递增的顺序,每一列都按照从上到下递增的顺序。
思路:既然二维数组中从上到下和从左到右都是递增的,那么我们就找第一行中第一个比查找的数(val)大的数,这个数后面的数一定大于val,这个数下面的数也一定大于val,所有这个数后面就不用查找了,把列的最后一行设置为这个数的这一列。
具体代码:
int fun(int (*arr)[4], int r, int c, int val)
{
if (arr != NULL && r > 0 && c > 0)
{
for (int i = 0; i < r; i++)
{
for (int j = 0; j < c; j++)
{
if (arr[i][j] > val)
{
c = j;
}
if (arr[i][j] == val)
{
return 1;
}
}
}
}
return 0;
}
int main()
{
int arr[][4] = { 1, 2, 8, 9, 2, 4, 9, 12, 4, 7, 10, 13, 6, 8, 11, 15 };
if(fun(arr,4,4,7))
{
cout<<"找到了"<<endl;
}
else
{
cout<<"没找到"<<endl;
}
return 0;
}