c++ - 快速的每列求和。可能的?

标签 c++ arrays performance math sum

请看这张图:

enter image description here

是否有可能比 O(n^2) 更快地找到所有列的每列总和?

首先,我认为如果我们像这样重新组合求和(一次求和 2 行,然后剩余 2 行,然后剩余 2 行......),则有可能使其成为 n * log(n):

enter image description here

但后来我计算了加号的数量,结果在两种情况下都是相等的 - 两张图片都是 7 = 7。

那么是否有可能在 n * log(n) 时间内得出这样的总和,或者我自欺欺人(我知道有 FHT 或 FFT 之类的变换,所以可能是这种情况)?

最佳答案

不,我们的输入大小是 O(n^2),所以我们的算法不能比这更快(因为我们正在使用所有输入值)。

这是假设 n 是行数,矩阵是正方形的(给定 n^2)并且元素之间没有特殊关系。

关于c++ - 快速的每列求和。可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905729/

相关文章:

javascript - 如何摆脱 - 警告 : Each child in a list should have a unique "key" prop

performance - Kotlin 使用运行时断言进行空值检查 - 性能开销?

sql - 在 View 中推送谓词

c++ - 使用 Pimpl Idiom 的其他原因或目的

c++ - 无法从压缩纹理数据创建图像 (S3TC)

c++ - 对包含 k 个已排序部分的 n 个元素的数组进行排序

ajax - 如何在没有 JSF 标记库的情况下编写 <table> 标记 (h :datatable or ui:repeat) but still use JSF for controlling page flow

c++ - Qt检查外部进程是否崩溃

c++ - 在结构 vector 中查找元素

arrays - 将字符串分配给数组而不是在 bash 脚本中使用读取?