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

时间:2012-07-25 16:29:56

标签: arrays

基本上,我已经定义了一个具有150个位置的数组Tp,增量为0.01。我还以相同的0.01增量定义了一个具有600个位置的数组Dp。我正在尝试编写一个大型数组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]
    }
}

1 个答案:

答案 0 :(得分:0)

你现在的表现最好。

首先,您需要滚动自己的数据表示以使值适合数组。其次,阵列将是巨大的。第三,巨大的阵列不会比你已经拥有的2个独立阵列做更多的事情,所以这将是全部成本而且没有任何好处。

从查询的角度来看:无论哪种方式,您都需要进行两次查找。目前,您从一个阵列执行一次查找,从另一个阵列执行另一次查找。另一方面,你需要在一个维度中进行一次查找,然后在第二维度中进行另一次查找。

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

从时间角度来看:两次查找都需要相同的时间。

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