美文网首页算法
java 有序数组查找指定数字位置(二分查找)

java 有序数组查找指定数字位置(二分查找)

作者: GentleWind | 来源:发表于2018-10-25 15:12 被阅读0次

由二分查找实现,实现复杂度为O(log n):

    /**
     * 查找有序数组指定数字位置。
     * @param a 输入数组
     * @param n 查找数字
     * @param low 数组左边界
     * @param high 数组右边界
     * @return
     */
    private static int getLocation(int[] a, int n, int low, int high){
        if(n >= a[0] && n <= a[a.length - 1]){
            int mid = (high + low)/2;

            //判断输入参数
            if(low > high){
                return -1;
            }

            //递归进行二分查找
            if(n < a[mid]){
                return getLocation(a, n, low, mid-1);
            }else if(a[mid] > n){
                return getLocation(a, n, mid+1, high);
            }else{
                return mid;
            }
        }else{
            throw new RuntimeException("所查询数字不在所属数组内!");
        }
    }

ps:如果有什么错误的地方欢迎指正。

相关文章

  • 二分查找及其扩展

    在有序数组中,二分查找是效率较高的查找算法。二分查找一般有递归和迭代 对有序数组查找指定数字在数组中出现的次数//...

  • java 有序数组查找指定数字位置(二分查找)

    由二分查找实现,实现复杂度为O(log n): ps:如果有什么错误的地方欢迎指正。

  • 二分查找

    二分查找的关键在于: 通过起始位置标记中心位置二分查找的数组必须是有序的。

  • JavaScript二分查找

    二分查找: 也称为折半查找,是指在有序的数组里找出指定的值,返回该值在数组中的索引。 查找步骤如下: 1.从有序数...

  • 二分查找

    概念二分查找又叫折半查找,从排序数组中查找元素的位置。 图示二分查找 Java实现 复杂度T(n)=T(n/2)+...

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • day13

    查找算法 顺序查找 二分查找 差值查找 斐波那契查找 二分查找 前提数组必须是有序的。 升级 Interpolat...

  • 二分查找法

    使用二分查找的前提是,查找的数组顺序必须是有序的。 二分查找又称折半查找,通过定义有序数组(左小右大)的首元素的索...

  • 二分搜索算法 Go

    说明 二分查找的数组必须是有序的,二分查找的优点是查找操作仅需要O(lgN)时间。 逻辑 首先传入的数组必须是有序...

  • 变异二分查找解题过程

    0.问题描述 题目描述请实现有重复数字的有序数组的二分查找。输出在数组中第一个大于等于查找值的位置,如果数组中不存...

网友评论

    本文标题:java 有序数组查找指定数字位置(二分查找)

    本文链接:https://www.haomeiwen.com/subject/msjqtqtx.html