当它的幂为2时,二进制搜索最后一个元素

时间:2016-04-06 04:19:20

标签: arrays performance search binary asymptotic-complexity

我有一个排序数组。

对于前。 {1,2,3,4,5,6,7,8}

如果我搜索元素8,那么需要4次迭代才能得到真或假的结果。我所知道的是二进制搜索的运行时间上限为O(logn),在这种情况下结果为3。

如果我错了,有人可以帮助我解决这个困惑或纠正我的概念吗?

我的代码如下:

public static boolean BinarySearch(int[] arr, int num){    
int mid, low, high;    
int count = 0;    
low = 0; high = arr.length -1;    
while( low <= high ){    
mid = low + (high-low)/2;    
if(arr[mid] == num)    
      return true;    
else if(arr[mid]<num)    
     low = mid +1;    
else
     high = mid -1;    
}    
return false;    
}

1 个答案:

答案 0 :(得分:0)

O 表示法的要点是隐藏不太重要的术语,以便更简单地表达复杂性。因此,尽管二进制搜索的复杂性是 O(lg n)是正确的,但确切的表达式可能是 ceil(lg n)+ 1 ,甚至< em> c ceil(lg n)+ b 对于任何 c b ceil()操作是必要的从对数中得到一个整数结果。)