美文网首页
二分查找算法

二分查找算法

作者: 132xin | 来源:发表于2020-03-03 22:04 被阅读0次

二分查找算法:在使用的前提是数组是排序的, 时间复杂度:O(log2n)
代码:
1.使用递归的方式

/**
     * 递归的方法
     * @param array 输入的数组
     * @param left 最左边的索引
     * @param right 最右边的索引
     * @param tag 要查找的数
     * @return 返回索引
     */
    public static int binarySeachForRecur(int[] array,int left,int right,int tag) {
        //要判断要查找的数是否在数组的范围里面,减少递归的次数
        if(left>right||tag<array[left]||tag>array[right]) {
           return -1;
        }
        int mid=(left+right)/2;
        if(array[mid]==tag) {
            return mid;
        }else if(array[mid]>tag) {
            //当mid小于tag时,则需要向左边查找
            return binarySeachForRecur(array,left,mid-1,tag);
        }else {
            //向右边查找
            return binarySeachForRecur(array,mid+1,right,tag);
        }
    }
    

2.非递归的方式

/**
     * 非递归的方法
     * @param array 输入的数组
     * @param left 最左边的索引
     * @param right 最右边的索引
     * @param tag 要查找的数
     * @return 返回索引
     */
    public static int binarySeachNotRecur(int array[],int left,int right,int tag) {
        while(left>=right) {
            int mid=(right+left)/2;
            if(array[mid]==tag) {
                return mid;
            }else if(array[mid]>tag) {
               //左边查找
                right=mid-1;
            }else {
                //向右查找
                left=mid+1;
            }
        }
        return-1;   
    }

相关文章

网友评论

      本文标题:二分查找算法

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