美文网首页算法
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 有序数组查找指定数字位置(二分查找)

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