问题描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
算法分析:可以直接遍历,不过时间复杂度太高,因为有序,可以从左下角查找,也可以从右上角查找。
public class Array {
//二维数组遍历
public boolean Find(int [][] array,int target)
{
for(int i = 0; i < array.length; i ++)
{
for(int j = 0; j < array[i].length; j ++)
{
if(array[i][j] == target)
{
return true;
}
}
}
return false;
}
//从左下角开始查找
public boolean Find2(int[][] array, int target)
{
int i = array.length - 1;
int j = 0;
while(i >= 0 && j <= array[0].length - 1)
{
if(target > array[i][j])
{
j ++;
}
else if(target < array[i][j])
{
i --;
}
else
{
return true;
}
}
return false;
}
}
原文:http://www.cnblogs.com/masterlibin/p/5721766.html