线性列 - 主阵列数据向行主变换

时间:2010-02-26 21:42:46

标签: 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 ,26,21,24,27

理想情况下,我需要传入数组索引并将偏移量返回到线性内存。在伪代码中,类似

for(;;)
{
   javaarray[2][2][1] = buffer[Util.LookupOffset(2,2,1)]
}

感谢。

1 个答案:

答案 0 :(得分:2)

首先,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)

对于(i,j,k)的输入,看起来像你想要的那样:

index = 9 * i + 3 * j + k