在一个二维数组中,每一行都按照从左至右递增的顺序排序,每一列都按照从上至下递增的顺序排序。请写一个函数,输入这样一个数组和一个整数,判断整数是否存在于这个数组中。
题目分析:假设有数组为{{1, 3, 5, 7, 9},
{2, 4, 6, 8, 10},
{3, 5, 7, 9, 11},
{4, 7, 10, 13, 16}}
对于下标为[0][4]的元素9,其所在列中所有的元素都比它大,其所在行中所有的元素都比它小,所以我们可以从[0][4]这个元素开始比较,如果输入的数字比它大,那么就可以排除掉第一行,如果输入的数字比它小,就可以排除掉最后一列。假设我们查找的数字是13,第一次比较完之后就可以排除掉第一行,然后我们需要在下面数组中重新继续查找
{{2, 4, 6, 8, 10},
{3, 5, 7, 9, 11},
{4, 7, 10, 13, 16}}
同样取第一行最后一个元素10跟13比较,因为13>10,于是又排除掉一行,依次类推。
下面是代码实现:
import java.util.*;
import java.lang.*;
class Test
{
public static void main(String args[])
{
int[][] array = {{1, 3, 5, 7, 9},
{2, 4,