时间复杂度可以表示O(h)=O(log2n) . 空间复杂度为O(1)
测试代码
public void binarySort(View view) {
int a[] = {1,4,5,7,9,10,44,55,78,82,91,92,99,100};
try{
int index = BinarySort.binarySort(a, 44);
Log.e("TAG", "index = "+index + " count = "+a[index]);
}catch (Exception e){
e.printStackTrace();
}
}
查找算法:
public class BinarySort {
public static int binarySort(int[] a,int key ){
int low = 0 ;
int high = a.length-1;
// 相当于除以2
int mid = (low +high ) >>> 1;
// 和数组中间值比较,
while (low < high){
// 如果小于中间值,下次在前半部分的数组中查找key 对应的index
if(key < a[mid]){
high = mid -1;
//如果大于中间值,下次在后半部分的数组中查找key 对应的index
}else if(key > a[mid]){
low = mid+1;
}else{
return mid;
}
}
// 返回值如果是-1 ,代表数组中没有找到对应的数值
return -1;
}
}