• 技术文章 >Java >java教程

    Java的二分查找实现原理及代码实现

    王林王林2023-04-27 08:52:06转载39

    1.二分查找步骤描述

    (1)首先确定整个查找区间的中间位置 mid = ( left + right )/ 2

    (2)用待查关键字值与中间位置的关键字值进行比较;

    若相等,则查找成功

    若大于,则在后(右)半个区域继续进行折半查找

    若小于,则在前(左)半个区域继续进行折半查找

    (3)对确定的缩小区域再按折半公式,重复上述步骤。

    最后,得到结果:要么查找成功, 要么查找失败。折半查找的存储结构采用一维数组存放。 折半查找算法举例

    java二分查找的原理如何实现2.要求

    (1)必须采用顺序存储结构。

    (2)必须按关键字大小有序排列。

    3.实例

    public class Demo {
     
        public static void main(String[] args) {
            int[] arr={-1,0,3,5,9,12};//查找的数组
            int searchNum=13;//查找的目标数
            Arrays.sort(arr);
     
            int resultOne=binarySearchOne(arr,searchNum,0,arr.length-1);
            System.out.println(resultOne);
     
            int resultTwo=binarySearchTwo(arr,searchNum);
            System.out.println(resultTwo);
        }
     
        /**
         * 递归实现
         * @param arr
         * @param searchNum
         * @param start
         * @param end
         * @return
         */
        public static int binarySearchOne(int[] arr,int searchNum,int start,int end){
            if(start>end)
                return -1;
            int middle=(start+end)/2;
            if(searchNum<arr[middle])
                return binarySearchOne(arr,searchNum,start,middle-1);
            else if(searchNum>arr[middle])
                return binarySearchOne(arr,searchNum,middle+1,end);
            else
                return middle;
        }
     
        /**
         * 非递归实现
         * @param arr
         * @param searchNum
         * @return
         */
        private static int binarySearchTwo(int[] arr, int searchNum) {
            int start=0;
            int end=arr.length-1;
            while(start<=end){
                int middle=(start+end)/2;
                if(searchNum<arr[middle])
                    end=middle-1;
                else if(searchNum>arr[middle])
                    start=middle+1;
                else
                    return middle;
            }
            return -1;
        }
    }

    以上就是Java的二分查找实现原理及代码实现的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除
    专题推荐:Java
    上一篇:Java虚拟机如何实现死锁 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • java中UDP怎么发送数据• Java连接SqlServer错误如何解决• Java方法如何定义与调用• Java操作pdf的工具类itext怎么处理• java的SynchronousQueue是什么
    1/1

    PHP中文网