二分查找
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;
}
}

浙公网安备 33010602011771号