当前位置: 首页 > news >正文

Java关于普通查找和二分查找

/**
 * 普通查找就是一个接一个地找(逐个找),对于数组是否已经排序没有要求
 */
public class 普通查找 {
    public static void main(String[] args) {
//        静态初始化一个int数组
        int[] array = {6,9,2,5,3,8,7};
//        采用逐个查找方法,查找元素8
        for (int i = 0; i < array.length-1; i++) {
            if (array[i] == 8){
                System.out.println("查找的元素的下标是:" + i);
                return;
            }
        }
        System.out.println("在该数组中没有此元素!");
    }
}
/**
 * 关于二分法查找是建立在排序基础之上的,二分法查找在java.util.Arrays下面已经写好
 * 方法名为"binarySearch",我们这里只是分析其原理。
 */
public class 二分法查找 {
    public static void main(String[] args) {
//        静态初始化一个int数组
        int[] array = {2,9,21,55,93,98,117};
//        查找
        int index = erFenFaChaZhao(array,117);
        System.out.println(index == -1? "没有找到该元素!":"该元素的下标是:" + index);

    }

    /**
     * 查找数组中的元素
     * @param array 被查找的数组
     * @param ele 被查找的元素
     * @return -1表示没有找到该元素,大于等于0表示被查找元素的下标
     */

    public static int erFenFaChaZhao(int[] array, int ele) {
        //最初开始元素下标
        int begin = 0;
        //最初结束元素下标
        int end = array.length-1;
        //在循环体中begin一直在增加,end一直在减少,只要begin <= end就一直循环
        while (begin <= end){
            //通过开始元素下标和结束元素下标获取中间元素下标
            int mid = (begin + end) / 2;
            //如果中间下标对应的元素正好等于被查找的元素,就返回该下标,并结束方法
            if (array[mid] == ele){
                return mid;
            //如果中间下标对应的元素小于被查找的元素,说明被查找的元素在中间元素的右侧
            }else if (array[mid] < ele){
                //重新定位新的开始元素下标
                begin = mid + 1;
            //程序运行到此说明中间元素下标对应的元素大于被查找的元素,说明被查找的元素在中间元素的左侧
            }else {
                //重新定位结束元素的下标
                end = mid - 1;
            }
        }
        return -1;
    }
}

相关文章:

  • 自定义网页中被选中文本的样式 CSS selection
  • 第五章 使用管理门户监控 - 监控日志
  • DBCO-ICG-disulfo_二磺酸-吲哚菁绿-二苯并环辛炔_disulfo-ICG-DBCO
  • 数据分享|R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据...
  • 【Pytorch】第 2 章 :马尔可夫决策过程和动态规划
  • 数据库01_内存分页管理_分段管理_设备管理_IO处理_索引文件结构_文件目录_位示图---软考高级系统架构师008
  • 虹科分享|基于CAN/CAN FD技术的机器狗是什么样的?
  • [附源码]JAVA毕业设计时间管理系统(系统+LW)
  • 【LeetCode_字符串_逻辑分析】9. 回文数
  • 文华财经期货量化策略抄底准确率高的指标公式,逃顶抄底精准共振起涨信号幅图指标
  • 【JDBC】----封装工具类和ORM
  • java-net-php-python-springboot舞房管理系统演示录像0512计算机毕业设计程序
  • 澳亚通过聆讯:上半年营收近3亿美元 元气森林与新希望乳业是股东
  • Linux中线程池的制作
  • Python——基础知识(1)
  • 笔试强训48天——day24
  • 【车载开发系列】UDS诊断---写入数据($0x2E)
  • ARM ACP
  • 评职称需要什么专利
  • CMake详细教程
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉