二分查找:

  1. 数组内的值必须按顺序排列。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public static void main(String[] args) {
int[] array = new int[1000];
for (int i = 0; i < array.length; i++) {
array[i] = i;
}
System.out.println(binarySearch(array,173));
}

public static int binarySearch(int[] array,int target){
//查找范围起点
int start = 0;

//查找范围终点
int end = array.length - 1;

//查找范围中位数
int mid;
while (start<=end){
//mid = (start+end)/2 有可能溢出
mid = start + (start + end) / 2;
if(array[mid] == target){
return mid;
}else if(array[mid] < target){
start = mid + 1;
}else{
end = mid - 1;
}
}
return -1;
}