已知一个三维数组`C[0..m1, 0..m2, 0..m3]`,采用行优先存储,每个元素占用`size`个存储单元。若已知 `C[i1,i2,i3]`的存储地址,若想快速计算`C[x1,x2,x3]`的存储地址,以下哪种方法在时间复杂度上最优?
答案解析
选项 C 正确。在已知`C[i1,i2,i3]`地址的情况下,直接计算`[x1,x2,x3]`相对于`[i1,i2,i3]`的偏移量并相加,只需要 `(x1-i1)*m2*m3*size + (x2-i2)*m3*size + (x3-i3)*size`, 时间复杂度为O(1)。选项 A 的方法需要完全重新计算,包括对首地址的偏移量,计算量最大,耗时最长。选项 B 需要先计算 `C[0,0,0]` 地址,计算量也比 C 大。选项 D计算`C[i1,i2,0]`地址,步骤多余,并非时间复杂度最优解。
正确答案:C