本文中介绍的线性查找为二分法查找方式,前提要求数组或者序列是有序的。二分法查找是查找方式中效率较高的一种,时间复杂度是logN,推导过程比较简单,设次数为x,N*(1/2)^x=1(之所以等于1,是考虑到最坏情况,查找到最后只剩下1个元素);则x=logN,底数是2。其代码如下:
public int getIndex(int[]arr,int value){
int min=0;
int max=arr.length-1;
int mid=(min+max)/2;
while(true){
if(min>max){
return -1;
}
if(arr[mid]==value){
return mid;
break;
}else{
if(arr[mid]>value){
max=mid-1;
mid=(min+max)/2;
}else if(arr[mid]<value){
min=mid+1;
mid=(min+max)/2;
}
}
}
}