在一个二维数组中,每一行都按照从左到右依次递增的顺序排序,每一列都按照从上到下依次递增的顺序排序。完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
思路:查找时,先从右上角开始比较。
构造测试用例:
思路主要是:分为查找得到和查找不到两种情况。并且这两种情况中,也要对边界及非边界进行测试。
int key1=15;//测试用例:找得到,最大值
int key2=1;//测试用例:找得到,最小值
int key3=9;//测试用例:找得到,介于最大值与最小值之间
int key4=16;//测试用例:找不到,最大值
int key5=0;//测试用例:找不到,最小值
int key6=5;//测试用例:找不到,介于最大值与最小值之间
代码如下:
#define ROW 4
#define COL 4
int Find_Key(int* arr,int key)
{
if(arr==NULL)
{
return -1;
}
int row=0;//0
int col=COL-1;//3
while(row<ROW&&col>=0)
{
if(arr[row*COL+col]<key)
{
++row;
}
else if(arr[row*COL+col]>key)
{
--col;
}
else
{
return 1;
}
}
return 0;
}