Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 线性列主数组数据到行主数组的转换_Java_Algorithm - Fatal编程技术网

Java 线性列主数组数据到行主数组的转换

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

我将基于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)]
}

谢谢。

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


也许这只是我的感觉,但从你的问题中完全不清楚你想做什么。对此我很抱歉。我同意。我应该问的是,我应该用什么广义公式来确定偏移量到基于列的线性阵列中。为了获得3D列主数组的线性数组中的偏移量,我使用了:index=row+(column*NUMROWS)+(k*NUMROWS*NUMCOLUMNS)
index = 9 * i + 3 * j + k