JAVA:关于数组维度的时间因素

时间:2016-05-05 15:32:04

标签: java arrays performance multidimensional-array

我有 C ++ 的编码经验。 最近,我一直在努力学习Java。

我正在网上法官那里练习一个简单的问题。 问题需要一个2x1000000维度的数组。 我宣布了一个数组:

int ara[][]=new int[1000000][2]

但是代码无法在3秒的时间限制内完成,并且在第一个测试用例中获得了超出时间限制的判决。

然后我就像这样切换尺寸:

int ara[][]=new int[2][1000000]

并相应地更改了代码,代码也被接受了。

经过一些实验后,我发现这是我的第一个代码超出时间限制的唯一原因。

int ara[][]=new int[1000000][2]int ara[][]=new int[2][1000000]之间有什么区别? 为什么这些数组声明之间存在如此巨大的时间差异?

1 个答案:

答案 0 :(得分:1)

分配内存需要时间。分配一个包含5个元素的数组并不需要花费与分配一个元素的5个数组相同的时间。对于每个分配,操作系统必须在页表中查找空闲块,分配它等等。

因此,在一个示例中,您只声明了2个数组,而在另一个示例中,您声明了1000000.这就是为什么一个比另一个快。