• 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;
        }
    }
  • 相关阅读:
    旧华硕电脑开机非常慢 电脑开机黑屏很久才显示品牌logo导致整体开机速度非常的慢怎么办
    【GD32F427开发板试用】OpenWSN无线协议栈移植与CPS系统搭建
    计算属性的复杂操作
    如何在windows上 安装&更新 显卡的驱动
    AHU 汇编 实验二
    Spring MVC中@InitBinder注解是如何应用的?
    数据上云,如何解除用户对厂商监守自盗的担忧?
    双目标定之张正友标定法数学原理详解matlab版
    [MySql]初识数据库与常见基本操作
    使用Perl和WWW::Mechanize库编写
  • 原文地址:https://blog.csdn.net/heliuerya/article/details/128213656