思路:从数组规律来看,先将查找数字与右上角数字作对比,如果大于右上角数字,说明右上角这一行都没有,如果小于说明右上角这一列都没有。
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;
}