【发布时间】:2017-05-23 01:49:32
【问题描述】:
有一种标准的使用循环来添加整数的方法,
sum =0;
for(int i =0;i<arraySize;i++){
sum+=array[i];
}
上述逻辑时间复杂度为 O(n),但如果 n 非常大(考虑 10^10),则需要更多时间来计算。所以,请给我任何时间复杂度小于 O(n) 的解决方案。
【问题讨论】:
-
让我们看看:你想对数组中的每个元素求和......但你想要比查看数组中的每个元素更快的东西,嗯......祝你好运!注意:您 可以 获得“更快”(例如,并行运行单独的线程、在 GPU 上执行、使用指针算法而不是索引等)...但是您 不能 i> 提高 O(n) 的“算法复杂度”。
-
多线程可以提高计算时间。
-
是的,这不可能。
-
必须访问所有元素,除非有特殊信息,例如所有元素都相同(或正则序列)。
-
A)你在交叉标记 B)不清楚你在问什么。不可能访问小于 N 步的 N 个数组槽。我们不能仅仅因为你不喜欢现实的行为方式就改变现实。