在排序数组中查找数字是否存在n / 2次的最小复杂度

时间:2013-08-10 21:49:35

标签: arrays algorithm complexity-theory

给定一个排序数组,是否可以在o(1)中查找元素是否超过n / 2次? 如果中间元素不等于我们正在寻找的元素,那么我们可以肯定地说它存在的时间少于n / 2次或根本不存在。但是如果中间元素等于我们正在寻找的元素,是否可以找到它的出现次数是否超过n / 2次?

2 个答案:

答案 0 :(得分:2)

我想你在看O(lg(n))。您需要进行二分查找才能找到元素的第一个和最后一个实例(假设元素精确存在n / 2次)。

答案 1 :(得分:-1)

O(1)并不意味着您只能搜索一次。它是表示小于固定常数的函数的渐近方式。

例如3是O(1),因此您可以搜索中间单元格及其两个相邻单元格,从而知道该元素是否至少存在n / 2次。