分析:
时间复杂度O(m+n) N = m*n
从右上角开始走:
大于当前元素,向下走;小于当前元素,向左走。
#include<stdio.h>
int search(int a[3][3],int row,int col,int k,int* px,int* py)
{
int i = 0;
int j = col -1;
//在有效的范围里面找元素
while(i < row && j >=0)
{
if(a[i][j] == k)
{
*px = i;
*py = j;
return 1;
}
else if(a[i][j] < k)
{
//当前元素小于k,向下走
i++;
}
else
{
//当前元素小于k,向左走
j--;
}
}
*px = -1;
*py = -1;
return 0;
}
int main()
{
int a[3][3] = {1,2,3,4,5,6,7,8,9};
int px;
int py;
search(a,3,3,7,&px,&py);
printf("%d %d\n",px,py);
return 0;
}