首先应该是排好序的数组
public class TestSearch {
public static void main(String[] args) {
int a[] = {1,3,6,8,9,10,12,18,20,34};
int i = 12;
System.out.println(binarySearch(a,i));
}
/*public static int search(int[]a,int num) {
for(int i = 0;i<a.length;i++) {
if(a[i]=num) {
return i;
}
}
return -1;
}*/
//二分法查找
public static int binarySearch(int []a,int num) {
if(a.length ==0) return -1;
int startPos = 0;
int endPos = a.length-1;
int m = (startPos+endPos) / 2;
while(startPos<=endPos) {
if(num == a[m]) return m;
if(num > a[m]) {
startPos = m+1;
}
if(num < a[m]) {
endPos = m-1;
}
m = (startPos + endPos) / 2;
}
return -1;
}
}