二维数组查找的JAVA实现

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数组的测试
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值