数组的二分查找

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
31
package xianxingbiao;

public class BiSearch {
//数组的二分查找
public static void main(String[] args) {
// TODO Auto-generated method stub

int [] arr=new int[] {1,2,3,4,5,6,7,8,9};//数组必须有序

int high=arr.length-1;
int low=0;
int mid=(low+high)/2;
int ele=9;//查找元素
int tag=-1;//目标元素的位置

while(low<=high) {
if(ele==arr[mid]) {
tag=mid;
break;
}else if(ele<arr[mid]) {
high=mid-1;
mid=(low+high)/2;
}else {
low=mid+1;
mid=(low+high)/2;
}
}

System.out.println(tag);
}
}

注意:
1、二分查找只能对有序数组查找;
2、时间复杂度:O(log2(n));