Java 线性列主数组数据到行主数组的转换
我将基于Fortran的3D列主顺序数组展平到线性内存中。我可以使用什么公式/算法将其映射回Java 3D行主顺序数组?比如说,Java 线性列主数组数据到行主数组的转换,java,algorithm,Java,Algorithm,我将基于Fortran的3D列主顺序数组展平到线性内存中。我可以使用什么公式/算法将其映射回Java 3D行主顺序数组?比如说, |1, 2, 3| |10, 11, 12| |19, 20, 21| |4, 5, 6| |13, 14, 15| |22 23, 24| |7, 8, 9| |16, 17, 18| |25, 26, 27| 在记忆中看起来像这样 缓冲区=1,4,7,2,5,8,3,6,9,10,13,16,11,14,17,12,15,18,19,22,25,20,23,2
|1, 2, 3| |10, 11, 12| |19, 20, 21|
|4, 5, 6| |13, 14, 15| |22 23, 24|
|7, 8, 9| |16, 17, 18| |25, 26, 27|
在记忆中看起来像这样
缓冲区=1,4,7,2,5,8,3,6,9,10,13,16,11,14,17,12,15,18,19,22,25,20,23,26,21,24,27
理想情况下,我需要传入数组索引并将偏移量返回到线性内存。在伪代码中,类似
for(;;)
{
javaarray[2][2][1] = buffer[Util.LookupOffset(2,2,1)]
}
谢谢。首先,Java数组索引是基于0的,所以您希望使用javaarray[1][2][0]而不是javaarray[2][3][1] 第二件事,我想我明白你想做什么
- 输入:0,0,0(插槽中有1)=> 输出:0(中的索引为1) 展平阵列)
- 输入:1,2,0(插槽 其中12个)=>输出:15(索引 (在展平阵列中为12)
- 输入:2,1,2(插槽中有26个)=>输出:23(展平阵列中的索引为26)
也许这只是我的感觉,但从你的问题中完全不清楚你想做什么。对此我很抱歉。我同意。我应该问的是,我应该用什么广义公式来确定偏移量到基于列的线性阵列中。为了获得3D列主数组的线性数组中的偏移量,我使用了:index=row+(column*NUMROWS)+(k*NUMROWS*NUMCOLUMNS)
index = 9 * i + 3 * j + k