要求:时间复杂度0(n)
#include<stdio.h>
#include<stdlib.h>
typedef struct ret
{
int x;
int y;
}two;
two Find(int (*arr)[4], int row, int col,int k)
{
two m;
m.x = 0;
m.y = 3;
while (m.x < 4 && m.y >= 0)
{
if (*(*(arr + m.x) + m.y) == k)
{
return m;
}
else if (*(*(arr + m.x) + m.y) > k)
{
m.y--;
}
else if (*(*(arr + m.x) + m.y) < k)
{
m.x++;
}
}
printf("没有此数字");
m.y = -1;
m.x = -1;
return m;
}
int main()
{
int k = 25;
int arr[4][4] = {
1,2,8,9,
2,4,9,12,
4,7,10,13,
6,8,11,15,
};
two ret = Find(arr, 4, 4,k);
printf("(%d,%d)", ret.x, ret.y);
return 0;
}