二维数组中的查找(Java实现)

本文介绍了一种在有序二维数组中查找特定数字的高效算法。通过始终选取右上角的元素进行比较,根据比较结果排除不必要的搜索范围,实现快速定位目标数字。文章提供了完整的Java代码实现及测试案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


public class Find {
    //二维数组中查找数字

    public static boolean hasNumber(int[][] numbers, int rows, int columns, int number){
        //输入验证
        if (numbers == null || rows <= 0 || columns <= 0)
            return false;

        //始终选取右上角的数字进行比较
        int row = 0;
        int column = columns - 1;
        while(row < rows && column >= 0){
            //找到数字
            if (numbers[row][column] == number)
                return true;
            //大于则排除列
            else if (numbers[row][column] > number)
                column--;
            //小于排除行
            else
                row++;
        }
        return false;
    }

    //测试用例
    public static void main(String[] args){
        int[][] numbers = {{1, 2, 3},{4, 5, 6}};
        System.out.println("该二维数组是否含有5:" + Find.hasNumber(numbers, 2, 3, 5));
        System.out.println("该二维数组是否含有7:" + Find.hasNumber(numbers, 2, 3, 7));
        System.out.println("该二维数组是否含有1:" + Find.hasNumber(numbers, 2, 3, 1));
        System.out.println("该二维数组是否含有6:" + Find.hasNumber(numbers, 2, 3, 6));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值