0
点赞
收藏
分享

微信扫一扫

二分搜索法

mm_tang 2022-04-13 阅读 73
java

是一个查找算法,查找目标集合必须是已经排好序的(有序的),必须知道升序还是降序。

1)查找数组中间的元素

2)与目标元素进行对比

3)相等:目标元素找到

4)中间元素大于目标元素:升序,在前半部分;降序,在后半部分

5)中间元素小于目标元素:升序,在后半部分;降序,在前半部分

6)将范围缩小,再执行二分查找算法,直到元素找到,数组已经没有元素

//二分查找算法
public class Demo12 {
    public static void main(String[] args) {
        int[] arr = {2,4,6,7,8,12,15,17,19,20,51} ;
        int index = binarySearch(arr,20,0,11);
        System.out.println(index);
    }
    /*
    arr:目标数组
    target:目标元素
    return:元素的下标
     */

    public static int binarySearch(int[] arr,int target,int start,int end){
        //如果数组已经缩小成0个元素
        if (start >= end){
            return -1;
        }
        int middle = (end + start)/2;

        //比较
        if (arr[middle] == target){
            //找到了
            return middle;
        }else if (arr[middle] >target){
            //在前半部分
            return binarySearch(arr,target,start,middle);

        }else {
            return binarySearch(arr,target,middle+1,end);
        }
    }
}
举报

相关推荐

0 条评论