【发布时间】:2011-08-10 08:29:23
【问题描述】:
我有变量 x,函数 f1(x), f2(x), .... fn(x)(n 可以达到 100 万)。这些函数的值是 1 或 0。那么,如何编写算法,可以快速提取返回 1 的函数呢?谢谢。
我在这里介绍我的。它的时间复杂度为 O(n),效率不够。
List funHaveTrueValues = new ArrayList();
for (int i=1; i<=n; ++i){
if (fi(x)==true){
funHaveTrueValues.add(fi);
}
}
}
有人可以提出 O(1) 算法吗?谢谢!
【问题讨论】:
-
是什么让您认为存在 O(1) 方法?
-
如果只有 n 个函数,为什么要迭代 n+1 的范围?
-
输入是什么?这可能只是文字游戏,但如果您输入的是
x,并且您的函数f1...fn被认为是输入的一部分,那么您的算法对于所有和每个x都是O(1),如果fi对于所有X 都是恒定的. -
使用具有 n 个处理器的并行机器。根据给定的信息,您必须检查所有 n 个函数。
标签: performance algorithm big-o