这将是一个很长的问题,请在阅读前深呼吸.
我想了解将一维数组的索引转换为多维数组的向量索引的最快算法.
让我们以一个例子来理解我为什么需要它:
我有一个二维数组:数组[i1] [i2]
i1从i1_b = 0运行到i1_e = 2
i2从i2_b = 0运行到i2_e = 1
所以这个数组逐行输出到文件中:
阵列[0] [0]
阵列[0] [1]
阵列[0] [2]
阵列[1] [0]
阵列[1] [1]
阵列[1] [2]
现在我逐行读取文件,索引k是最后读取的行号.
我读了第一行,即Array [0] [0]和k = 0
我读了第二行,即Array [0] [1]和k = 1
...
可以注意到k将从k_b = 0运行到k_e = 5和
k = 0将对应于i1 = 0,i2 = 0
k = 1将对应于i1 = 0,i2 = 1
...
问题:所以我的问题是如何以最快的方式将k转换为i1和i2?(我在阅读文件时不需要它,但稍后在我的程序中)
在这个例子中,其中一个解决方案是
i1 = k /(i1_e - i1_b + 1);
i2 = k%(i1_e - i1_b + 1);
问题1:就周期和计算机时间而言,它是否是最快的解决方案?
好.问题2:我们如何将此算法推广到多维数组?
阵列[I1] …