两个矩阵 M1 和 M2 将分别存储在数组 A 和 B 中。每个数组都可以按行优先或列优先的顺序存储在连续的内存位置中。计算 M1 × M2 的算法的时间复杂度为
(A)如果 A 在行优先,而 B 在列优先顺序,则最好
(B)如果两者都按行优先顺序最好
(C)如果两者都在列主序中是最好的
(D)独立于存储方案答案: (D)
解释:这是一个技巧问题。请注意,这些问题询问的是时间复杂度,而不是程序所花费的时间。对于时间复杂度,我们如何存储数组元素并不重要,我们总是需要访问相同数量的 M1 和 M2 元素来乘以矩阵。在数组中进行元素访问总是常数或 O(1) 时间,常数可能因不同的方案而异,但时间复杂度不会。
这个问题的测验