package org.lza;
/**
* 在一个二维数组中,每一行按照从左到右递增的顺序排序,每一列按照从上到下递增的顺序排序。
* 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
* @author Joson
*
*/
public class AlgorithmRealizeByJava {
public static void main(String args[]){
Test();
}
/**
* 判断一个二维数组是否有要查找的数字
* @param num 待查找数字
* @param data 要查的二维数组
* @return 存在返回TRUE 否则返回FALSE
*/
public static boolean isContainNum(int num, int data[][]){
if(data==null||data.length<1||data[0].length<1)//如果待判断数组为空则直接返回FALSE
{
System.out.println("数组为空!");
return false;
}
boolean flag=false;//定义一个布尔变量 用来标志数组中是否含有被判断的元素
int rows=data.length;//取得数组的行数
int cols=data[0].length;//取得数组的列数
for(int row=0,col=cols-1;row<rows&&col>=0;){
if(num==data[row][col]){//判断数字与数组右上角的数字的大小 相等则直接返回true
flag=true;
break;
}else if(num<data[row][col]){//如果比右上角的数字小 根据数组特性排除这一列
col--;
}else{
row++;//根据数组特性排除这一行
}
}
return flag;//返回判断结果
}
private static void Test(){
final int data[][]={{1,2,3},{2,3,4},{4,5,6}};//声明一个测试数组
final int data1[][]={};
System.out.println(isContainNum(1,data));//左上角数字测试
System.out.println(isContainNum(3,data));//右上角数字测试
System.out.println(isContainNum(4,data));//左下角数字测试
System.out.println(isContainNum(6,data));//右下角数字测试
System.out.println(isContainNum(0,data));//小于数组所有的数字测试
System.out.println(isContainNum(8,data));//大于数组所有的数字的测试
System.out.println(isContainNum(2,data1));//空数组的测试
System.out.println(isContainNum(8,null));//NULL数组的测试
}
}
二维数组查找的JAVA实现
最新推荐文章于 2019-05-16 10:50:32 发布