对于我们要查找的元素出现在其中的 2^n-1 个元素的排序数组的二进制搜索,摊销的最坏情况时间复杂度是多少?
在我的期末考试复习表上找到了这个。我什至无法弄清楚为什么我们需要分摊时间复杂度进行二分搜索,因为它最坏的情况是 O(log n)。根据我的笔记,摊销成本计算算法的上限,然后将其除以项目数,所以这不会像最坏情况下的时间复杂度除以 n 那样简单,即 O(log n )/2^n-1?
作为参考,这是我一直在使用的二进制搜索:
public static boolean binarySearch(int x, int[] sorted) {
int s = 0; //start
int e = sorted.length-1; //end
while(s <= e) {
int mid = s + (e-s)/2;
if( sorted[mid] == x )
return true;
else if( sorted[mid] < x )
start = mid+1;
else
end = mid-1;
}
return false;
}