问题重述:
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序。请完成一个函数,输入这样的一个二维数组和整数,并判断数组中是否含有该整数。
假设二维数组如下所示:
解题思路:
假设要查找数字7是否在上述二维数组中,我们可以采取下述的方法:
从右上角开始进行比较,根据大去行,小去列的原则进行。
编码实现:
int FindNum(int *arr,int row,int col,int num)
{
assert(arr != NULL);
int i =0;
int j = col-1;
while (i <= row && j >= 0)
{
if (arr[i*col + j] < num)
{
++i;
}
else if (arr[i*col + j] > num)
{
--j;
}
else
{
printf("row=%d,col=%d\n",i,j);
return num;
}
}
printf("Not Found\n");
return -1;
}