使用min-value int实现数组

时间:2010-11-18 10:06:29

标签: java arrays multidimensional-array

我目前有一个nxn数组。我计划用无穷大初始化数组中的所有单元格,如果与单元格比较的值低于单元格内的值,则稍后更改它。这是我到目前为止所提出的伪代码,使用-1表示无穷大。你怎么看?这是最有效的方法,任何错误?

if(table[i][j] == -1 || (table[i][j] != -1 && table[i][j] > value)
    then table[i][j] = value

3 个答案:

答案 0 :(得分:2)

我会以Integer.MAX_VALUE开头。这样,代码可以更简单:

if(table[i][j] > value) {
     table[i][j]=value;
}

请注意,如果您的数组包含双精度数,您甚至可以使用Double.POSITIVE_INFINITY

答案 1 :(得分:1)

如果您确定可以将值-1视为“保留”值,那么您可以采用这种方法。

您还可以考虑将数据类型封装在某些PossiblyInfinitInteger中,该数据类型的布尔值是否设置为无穷大。也许是一种矫枉过正,我不知道。

答案 2 :(得分:1)

  1. if(table [i][j] == -1 || table[i][j] > value) then ...也是如此。我不确定,但编译器可能会处理这个问题。
  2. 如果-1被保留,并且值不能小于0,那么您的方法是正确的,只需比较table[i][j] < value而不是反之亦然。
  3. 如果使用-1作为保留值是个问题,请使用Integer.MAX_VALUE: if(table[i][j] == Integer.MAX_VALUE) then table[i][j] = value;