题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:可以从右上角进行出发比较,因为对于右上角的数字,其左边的的数字均比其小,下面的数字均比其大
代码:
#include <stdio.h>
int FindNumInArr(int arr[3][4], int row, int col, int num)
{
int findrow = 0;
int findcol = col - 1;
int result = 0;
while (findrow < row && findcol > 0)
{
if (arr[findrow][findcol] == num)
{
result = 1;
break;
}
else if (arr[findrow][findcol] < num)
{
findrow++;
}
else if (arr[findrow][findcol] > num)
{
findcol--;
}
}
return result;
}
int main()
{
int arr[3][4] = { {1,2,3,4},{2,3,4,5},{7,8,9,10} };
int num = 0;
int result = 0;
scanf("%d", &num);
result = FindNumInArr(arr, 3, 4, num);
if (result == 1)
{
printf("Find num in arr!\n");
}
else
{
printf("Not find num in arr!\n");
}
return 0;
}