【发布时间】:2013-08-22 12:16:49
【问题描述】:
最近,我收到了一个问题,要查找从 n 给定元素中搜索元素所需的最小比较,前提是它们是 sorted,并且出现超过一半 (n/2)。
例如。给定排序数组为:1,1,2,2,2,2,2,7,11。这个数组的大小是:9。我们需要找到找到2所需的最少比较(因为它的出现次数超过n/2次(5)。
什么是最好的算法,最坏的情况是什么?
提供的选项有:
i) O(1)
ii) O(n)
iii) O(log(n))
iv) O(nlog(n))
【问题讨论】:
-
二分搜索最坏的情况是
O(log(n)),这通常是在这种情况下所做的 -
@crush 我认为这种情况使测试它变得容易得多......
-
我想我不清楚
what would be the worst case Complexity仅指的是查找 2,而不是数组中的任何数字。如果只针对2,那就是O(1)。 -
@crush,我只是举个例子来说明,它是针对一般情况的
-
@VarunMalhotra
2我的意思是,如果应用于一般情况,任何重复次数超过 n/2 次。那个场景是O(1)。对于数组中的任何其他数字,它基本上是O(log(n))
标签: c++ c algorithm time-complexity