算法:二维数组查找
题目描述:
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
问题解析:
这一道题还是比较简单的,我们需要考虑的是如何做,效率最快。这里有一种很好理解的思路:
矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,
因此从左下角开始查找,当要查找数字比左下角数字大时。右移
要查找数字比左下角数字小时,上移。这样找的速度最快。
示例代码:
public boolean Find(int target, int [][] array) {//基本思路从左下角开始找,这样速度最快int row = array.length-1;//行int column = 0;//列//当行数大于0,当前列数小于总列数时循环条件成立while((row >= 0)&& (column< array[0].length)){if(array[row][column] > target){row--;}else if(array[row][column] < target){column++;}else{return true;}}return false;
}