话不多说,先上代码 :
public int binarysearch (int []array,int value ){
int begin =0;
int end = array.length -1;
while(begin <=end){
int mid= begin +((end-begin)/2);
if(array[mid]<value){
begin = mid +1;
}
else if(array[mid]>value){
end = mid -1;
}
else
return mid;
}
return -1;
}
按最坏的情况查找顺序表的最后一个数,比如我们在一个顺序表中只有元素1和4两个数据那么 mid先是为1,再mid++得到4,一共需要进行两次循环;若顺序表中有四个元素4,7,9,12,那么第一次查找得到7,第二次得到9,第三次才能得到12;若有八个元素,则按代码逻辑需要循环查找4次。
设元素个数为 n ,查找次数为 a 则容易得到关系:
由此可知二分查找的时间复杂度为 log2n 。
版权声明:本文为qq_56070359原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。