会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132384个问题
JAVA 全系列/第十一阶段:消息中间件与高并发处理/RabbitMQ 17823楼
WEB前端全系列/第二阶段:JavaScript编程模块/运算符_数据类型和流程循环语句 17829楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO流技术 17830楼
Python 全系列/第二阶段:Python 深入与提高/文件处理 17832楼

package com.itbaizhan;

/**
 * 二分法查找的基本算法
 */
import java.util.Arrays;
public class TestBinarySearch {
    public static void main(String[ ] args) {
        int[ ] arr = { 30,20,50,10,80,9,7,12,100,40,8,60,14,10};
        int searchWord = 20; // 所要查找的数
        Arrays.sort(arr); //二分法查找之前,一定要对数组元素排序
        System.out.println(Arrays.toString(arr));
        System.out.println(searchWord+"元素的索引:"+binarySearch(arr,searchWord));
    }


    public static int binarySearch(int[ ] array, int value){
        int low = 0;
        int high = array.length - 1;
        while(low <= high){
            int middle = (low + high) / 2;
            System.out.println(middle);
            if(value == array[middle]){
                return middle;          //返回查询到的索引位置
            }
            if(value > array[middle]){
                low = middle + 1;
            }
            if(value < array[middle]){
                high = middle - 1;
            }
        }
        return -1;      //上面循环完毕,说明未找到,返回-1
    }
}

这里的

int middle = (low + high) / 2;

什么意思单数的话也除不开啊

现在数组长14high等于13middle等于13除二为什么等于6?

JAVA 全系列/第一阶段:JAVA 快速入门/数组和数据存储 17833楼

    //按姓名查询记录
    public void searchByName(){
//        System.out.println("seatchByName");
        TelNoteRegex regex = new TelNoteRegex();
        String name = regex.nameValidate();
        serchByAny(name,"name");
        
// 将搜索方法抽取出来定义新的方法,传入搜索的内容 和 搜索的方式
    public void serchByAny(String byAny,String f){
        boolean flag =true;
        for (Person p:this.list){
            if (f=="name"){
                if (byAny.equals(p.getName())){
                    System.out.println(p);
                    flag=false;
                }
            }
            if (f=="age"){
                if (byAny.equals(p.getAge())){
                    System.out.println(p);
                    flag=false;
                }
            }
            if (f=="sex"){
                if (byAny.equalsIgnoreCase(p.getSex())){
                    System.out.println(p);
                    flag=false;
                }
            }
            if (f=="add"){
                if (byAny.equals(p.getAddress())){
                    System.out.println(p);
                    flag=false;
                }
            }
            if (f=="tle"){
                if (byAny.equalsIgnoreCase(p.getTleNum())){
                    System.out.println(p);
                    flag=false;
                }
            }

        }
            if(flag){
                System.out.println("查无此人");
            }
        }

老师这样的方法行吗,感觉在这基础上还能在优化

JAVA 全系列/第二阶段:JAVA 基础深化和提高/智能电话本项目实战 17835楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637