题目:
在一个二维数组中,每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下递增的顺序排序,完成一个函数,输入这样的二维数组和一个整数 ,判断数组中是否有该整数。
解题思路:
以具体实例为思路画出二维数组的矩形,查找数组中是否有数字7。
我们要先从二维数组中选一个数字与要查询的数组进行对比,来查找数组中是否有要查找的数,可选数组中任意一数字。
我们先选取右上角的数字9,由于9大于7,而且9是第四列最小的数字,所以7不可能在第四列, 于是我们把第四列从数组中剔除(浅蓝部分表示数组中剩余部分)。
在剩余的矩阵中,我们继续选择位于右上角的数字8,8大于7,同理,
我们也把第三列从数组中剔除。
在剩余2列4行中继续选择位于右上角的数字2,2小于7,由于2是剩余数组中当前行最大的数字,所以当前行也不存在7,只可能出现在2的下面,也把当前行剔除掉。
继续从剩下的三行两列中选择右上角的数子4,同理,把数字4所在的行也剔除掉。
在剩下的两行两列中,要选取位于右上角的数字刚刚好是我们要查找的7,于是查找过程结束。
参考代码: