从数组右上角开始判断,如果KEY值大于此数,则不在这一行,如果KEY值小于这个数,则不在这一列
#include<stdio.h>
#include<iostream>
int serch(int arr[][4],int key, int ref, int low, int *releft, int *reup)
{
int tem;
int left = ref - 1;
int up = 0;
while(left>=0 && left<ref && up>=0 && up < low && tem != key)
{
tem = arr[up][left];
if( tem == key )
{
break;
}
else if( tem < key )
{
up++;
}
else if( tem > key )
{
left--;
}
}
if(tem == key)
{
*releft = left;
*reup = up;
return 1;
}
return -1;
}
int main()
{
int arr[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int p, q;
int val = serch(arr,100,4,4,&p,&q);
if(val > 0)
{
printf("%d,%d\n",p,q);
}
else
{
printf("no key!!\n");
}
return 0;
}