Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays - Fatal编程技术网

java-慢速计算处理

java-慢速计算处理,java,arrays,Java,Arrays,我试着运行这个,但是速度很慢。需要很长时间才能处理并完成计算。我有什么办法可以改进它或使它更快更有效地工作吗 int n = 25; int len = (int) Math.pow(2, n); String[][] BinaryNumbers = new String[len][]; int[] DummyArray = new int[n]; int[][] BinaryNumbersInt = new int[len][]; for (int count = 0; count <

我试着运行这个,但是速度很慢。需要很长时间才能处理并完成计算。我有什么办法可以改进它或使它更快更有效地工作吗

int n = 25;
int len = (int) Math.pow(2, n);
String[][] BinaryNumbers = new String[len][];
int[] DummyArray = new int[n];
int[][] BinaryNumbersInt = new int[len][];

for (int count = 0; count < len; count++) {
    BinaryNumbers[count] = String.format("%" + n + "s",
                                    Integer.toBinaryString(count)).replace((" "), ("0"))
                                .split("");

    for (int i = 0; i < n; i++) {
        DummyArray[i] = Integer.parseInt(BinaryNumbers[count][i]);
    }

    BinaryNumbersInt[count] = Arrays.copyOf(DummyArray, DummyArray.length);
}

谢谢

您正在进行大量无用的字符串操作。试着这样做:

for (int count = 0; count < len; count++) {
    int[] DummyArray = new int[n];
    int x = count;
    for (int i = 0; i < n; i++) {
        DummyArray[n-i-1] = x & 1;
        x >>= 1;
    }

    BinaryNumbersInt[count] = DummyArray;
}

它实际上应该做什么?做2^25件事需要很长时间,特别是如果你为每件事分配并保留内存的话。我建议删除这个问题,改为在代码审查网站上发布。另外,一定要添加一个问题陈述,解释代码的作用。顺便说一下,for-in-for循环在结束前结束25*25^2=2.220446e+36循环。。。也许这就是为什么要花很长时间。。。只是说。你真的需要BinaryNumbers吗?@o6707448好吧,也许你根本不需要构建数组:你可以在需要的时候计算BinaryNumbersInt[count]的值。