二分查找

1. 二分查找的必要条件

  • 用于查找的内容逻辑上来说是需要有序的,必须是有序序列
  • 查找的数量只能是一个,而不是多个

2. 二分查找的思想
因为是有序序列,所以查找目标如果小于序列的中间值,就可以排序另一边

注!!! 不用纠结序列的长度是不是基数,奇数偶数的逻辑都是一样的

3.代码来喽

package com.baidu.ueditor;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] arr = {8,4,5,7,1,3,6,2};
        int a = erfen(arr , 0 , arr.length-1 , 10);
        System.out.println(a);
    }

    /**
     * @param arr   目标序列
     * @param left  左边界
     * @param right 右边界
     * @param temp  查找目标
     */
    public static Integer erfen(int[] arr , int left , int right , int temp){
        while(left <= right){
            //这么写是为了防止溢出,因为int有范围,如果left+right有可能会超出范围
            int mid = left + ( (right - left) / 2 );
            if (temp < arr[mid]){
                right = mid - 1;
            }
            if (temp > arr[mid]){
                left = mid + 1;
            }
            if (temp == arr[mid]){
                return mid;
            }
        }
        return -1;
    }
}
posted @ 2024-02-21 13:36  Hello-!World  阅读(33)  评论(0)    收藏  举报