繁体   English   中英

如何使用两个较小数组的位置定义二维数组?

[英]How do you define a two-dimensional array using positions from two smaller arrays?

基本上,我以0.01的增量定义了一个具有150个位置的数组Tp。 我还定义了一个数组Dp,具有600个位置,以0.01的增量递增。 我正在尝试编写一个大数组TpDp,该数组将Tp和Dp数组值的每种组合放入其两列中,以便Tp在第一列中,而Dp在第二列中。 我不确定如何定义TpDp [] []位置,以使其相等,例如(并非语法正确) int TpDp[0][0] = new int [Tp[0]][Dp[0]]

我可能会遇到各种各样的错误,但是到目前为止,这是我已经设置好Tp和Dp的设置(A = 150,B = 600,分别是Tp和Dp中的位置数):

int [][] TpDp = new int [A*B][A*B]; //declaring new 2-dimensional array TpDp, size needed for combos 

int i; //iteration counter for Tp

int j; //iteration counter for Dp



for (i=0; i<=A; i++)
{ //i counting through all positions in Tp until exhausts A column options
    for (j=0; j<=B; j++)
    { //j counting through all positions in Dp until exhausts B column options
         TpDp[i][j] = Tp[i], Dp[j]; //This is where I'm not sure how do define TpDp[i][j]
    }
}

您现在拥有的代表是最好的。

首先,您需要滚动自己的数据表示形式以使值适合数组。 其次,阵列将是巨大的。 第三,巨大的阵列除了您已经拥有的2个单独的阵列外,不会做任何其他事情,因此,这一切都是成本,没有收益。

从查找的角度来看:两种方式都需要进行两次查找。 当前,您从一个阵列进行一次查找,而从第二个阵列进行另一次查找。 另一种方法是,您需要在一个维度中进行一次查找,然后在第二维度中进行另一次查找。

从内存的角度来看:您的数量是32位值。 您存储其中的150 + 600,总计3000字节。 另一种方法是,需要150 * 600个64位宽的值(以存储两个数字),即720000字节(与当前方法相比,效率约为0.4%)。

从时间角度来看:两次查找将花费相同的时间。

从数据角度来看:第二种方法将具有大量的冗余数据,第一种方法将每个必要的值存储一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM