package althorgrim;
/**
* 1、必须采用顺序存储结果
* 2、关键字必须有序
* @author hanrk-2734
*
*/
public class TestBinarySearch {
public static int binarySearch(int a[],int goal){
int high=a.length-1;
int low=0;
while (low<=high) {
int middle=(low+high)/2;
if (a[middle]==goal) {
return middle;
}
else if (a[middle]>goal) {
high=middle-1;
}
else {
low=middle+1;
}
}
return -1;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] src = new int[] {1, 3, 5, 7, 8, 9};
System.out.println(binarySearch(src, 3));
}
}
O(1):直接寻址到
O(n):遍历n个元素
O(logn):随着元素增加,呈现指数关系
O(n2):增加一倍元素,时间增加4倍
折半查找的算法时间复杂度最好的情况是O(1),平均情况下是logn。