二维数组中的查找
问题描述:一个二维数组,每一行从左到右递增,每一列从上到下递增, 输入一个二维数组和一个整数,判断数组中是否含有整数。
首先,我们先说一般的方法:暴力查找,相信大多数人都会做,这里不详细赘述了。
本方法思想::如果右上角元素大于要查找的元素,则那一列删除(那一列都比这个数字打,就不需要查找这一列了);如果右上角元素小于要查找的元素 ,则那一行删除(说明这一行的元素都比这个数小,就不需要查找这一行了)。
持续更新...
代码附下
Java实现:
package 二维数组中的查找;
/**
* 问题描述:一个二维数组,每一行从左到右递增,每一列从上到下递增
* 输入一个二维数组和一个整数,判断数组中是否含有整数。
* @author user
*如果右上角元素大于要查找的元素,则那一列删除
*如果右上角元素小于要查找的元素 ,则那一行删除
*/
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] testarray = new int[4][4];
testarray[0][0] = 1;
testarray[0][1] = 2;
testarray[0][2] = 8;
testarray[0][3] = 9;
testarray[1][0] = 2;
testarray[1][1] = 4;
testarray[1][2] = 9;
testarray[1][3] = 12;
testarray[2][0] = 4;
testarray[2][1] = 7;
testarray[2][2] = 10;
testarray[2][3] = 13;
testarray[3][0] = 6;
testarray[3][1] = 8;
testarray[3][2] = 11;
testarray[3][3] = 15;
findNmber(testarray, 7);
System.out.println(findNmber(testarray, 5));
}
private static boolean findNmber(int[][] a, int num) {
// TODO Auto-generated method stub
int colum = a[0].length - 1;
int row = 0;
while (row <= a.length - 1 && colum >= 0) {// a.length是行数
if (a[row][colum] == num) {
return true;
} else if (a[row][colum] > num) {
colum--;
} else {
row++;
}
}
return false;
}
}
持续更新...欢迎赞赏!
https://blog.csdn.net/ustcer_93lk/article/details/80367335
如果有问题,欢迎大家留言,有更好的方法也期待大家告知。