欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java中查找数组是否包含输入的值(原生/二分法)

程序员文章站 2022-04-23 15:09:06
知识点: 原生方法范围广,可以是字符串,数字等,而二分法必须是有序数的数列。实例: 给定二维数组: int [ ] [ ] ary = {{1,2,3},{4,5,6}} 键盘输入一个值, 查询数组是否含有该值?原生方法:public static void main(String[] args) { // 定义二维数组 //键盘输入数字 Scanner scanner = new Scanner(System.in); /....

知识点: 原生方法范围广,可以是字符串,数字等,而二分法必须是有序数的数列。


实例: 给定二维数组: int [ ] [ ] ary = {{1,2,3},{4,5,6}} 键盘输入一个值, 查询数组是否含有该值?

  1. 原生方法:
public static void main(String[] args) {
        // 定义二维数组
        //键盘输入数字
        Scanner scanner = new Scanner(System.in);
        //判断二维数组是否包含输入的数字
        int [][] ary = {{1,2,3},{4,5,6}};
        System.out.println("请任意输入一个数值:");
        int i1 = scanner.nextInt();
        // 立flag,这是一种思想,必须牢记掌握哦!
        boolean flag = true;
        for (int i = 0; i <ary.length ; i++) {
            for (int j = 0; j <ary[i].length ; j++) {
                if(i1==ary[i][j]) {
                    System.out.println("数组里包含该数字");
                    flag = false;
                    break;
                }
            }
        }
        if(flag) {
            System.out.println("不包含");
        }
    }

  1. 二分法: 给定一维数组 ary = [1,5,6,7,9,26,55,77,88,99,198,990,740]

// 查找ary数组里,是否含有键盘输入的数字
    public static void main(String[] args) {
        int [] ary = {1,5,6,7,9,26,55,77,88,99,198,990,740};
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int destination = scanner.nextInt();
        int head = 0;// 初始索引值
        int end = ary.length-1;//末尾索引值
        boolean isFlag = true;
        while(head<=end) {
            int middle = (head+end)/2;
            if(destination == ary[middle]) {
                System.out.println("找到了输入的值,下标为:"+middle);
                isFlag = false;
                break;
            }else if (destination < ary[middle]) {
                end = middle - 1;
            }else{
                head = middle + 1;
            }
        }
        if (isFlag) {
            System.out.println("很遗憾,没有找到你要的值!");
        }

编程思想: 两个例子中都运用了 isFlag 打标签的方法,来判断条件不满足时,执行的语句, 如果不立flag, 把语句写到循环里,可能会输出多次很遗憾。

二分法思想 : 针对有序数组,字符串不可以,如果查询字符串的话,可以用equals是否相等 来判断 是否存在。

本文地址:https://blog.csdn.net/SoULikeMe/article/details/109892420