Java的数组查找

在java中,我们常用的查找有两种:

1.顺序查找 SeqSearch.java

2.二分查找(这里只提供思路)

案例:有一个数列:白眉鹰王,金毛狮王,紫衫龙王,青翼蝠王 猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称[顺序查找]要求:如果找到,就提示找到,并且给出下标值

(下面我自己写的,后来感觉这方法很笨)

java 复制代码
import java.util.Scanner;
public class arraySearch{
    public static void main(String args[]){
        //有一个数列:白眉鹰王,金毛狮王,紫衫龙王,青翼蝠王 猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称[顺序查找]要求:如果找到,就提示找到,并且给出下标值
        String wordarr[] = {"白眉鹰王","金毛狮王","紫衫龙王","青翼蝠王"};
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入要猜的名称");
        String key = myScanner.next();
        switch(key){
            case("白眉鹰王"): {
                for (int i = 0; i < wordarr.length; i++) {
                    if (wordarr[i].equals(key)) {
                        System.out.println(key + " 的下标是: " + i);
                        break;
                    }
                }
            }
            break;
            case("金毛狮王"): {
                for (int i = 0; i < wordarr.length; i++) {
                    if (wordarr[i].equals(key)) {
                        System.out.println(key + " 的下标是: " + i);
                        break;
                    }
                }
            }
            break;
            case("紫衫龙王"): {
                for (int i = 0; i < wordarr.length; i++) {
                    if (wordarr[i].equals(key)) {
                        System.out.println(key + " 的下标是: " + i);
                        break;
                    }
                }
            }
            break;
            case("青翼蝠王"): {
                for (int i = 0; i < wordarr.length; i++) {
                    if (wordarr[i].equals(key)) {
                        System.out.println(key + " 的下标是: " + i);
                        break;
                    }
                }
            }
            break;
            default:
                System.out.println("输入有误,程序退出");
        }


    }
}

更聪明的方法:

java 复制代码
import java.util.Scanner;
public class SeqSearch {
    public static void main(String args[]) {
        //有一个数列:白眉鹰王,金毛狮王,紫衫龙王,青翼蝠王 猜数游戏:从键盘中任意输入一个名称,判断数列中是否包含此名称[顺序查找]要求:如果找到,就提示找到,并且给出下标值
        String names[] = {"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王"};
        int index = -1;//定义一个索引变量,如果下面的if语句执行成功,则index不再等于-1,就不会弹出"没找到"
        Scanner myScanner = new Scanner(System.in);
        System.out.println("请输入名称");
        String findName = myScanner.next();
        for(int i = 0;i < names.length;i++)
        {
            //比较字符串equals
            if(findName.equals(names[i]))
            {
                System.out.println("找到了,下标值是" + i);
                index = i;//如果找到了数组中相等的语句就改变index的值,使其不会弹出"没找到"
                break;
            }
        }
        if(index == -1)
            System.out.println("没找到");





    }
}

二分查找(仅提供思想不提供代码):

请对一个有序数组进行二分查找{1,8,10,89,1000,1234},输入一个数看看该数组是否存在此数,并且求出下标,如果没有就提示"没有这个数"

首先,二分查找要求提供的数组是有序的,以上面的数组为例,首先会将输入的数字与数组中间的数比对,如果输入的数大于中间的数则往它右边继续查找,反之则往左边查找

相关推荐
虹科网络安全10 分钟前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
axng pmje35 分钟前
Java语法进阶
java·开发语言·jvm
rKWP8gKv71 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫1 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287921 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本1 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
止语Lab1 小时前
从手动到框架:Go DI 演进的三个拐点
开发语言·后端·golang
yaoxin5211231 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
小短腿的代码世界1 小时前
Qt日志系统深度解析:从qDebug到企业级日志框架
开发语言·qt
REDcker2 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js