思路:從數組規律來看,先將查找數字與右上角數字作對比,如果大於右上角數字,說明右上角這一行都沒有,如果小於說明右上角這一列都沒有。
int FindYs(int arr[ROW][COL],int num)
{
int row = 0;
int col = COL - 1;
while (row < ROW & col >= 0)
{
if (num > arr[row][col])//如果大於說明這行沒有,向下一行查找
{
row++;
}
else if (num < arr[row][col])//如果小於說明這列沒有,向前一行查找
{
col--;
}
else if (num == arr[row][col])
{
return 1;//找到返回1
}
}
return 0;//循環結束沒有找到,返回0
}
void test()
{
int arr[ROW][COL] =
{
1, 2, 3,
4, 5, 6,
7, 8, 9,
};
int ret = FindYs(arr,5);
if (1 == ret)
{
printf("找到了\n");
}
else
{
printf("沒找到\n");
}
}
int main()
{
test();
system("pause");
return 0;
}