我有一个简单的问题:
下面我用随机值填充一个数组并找到最大值。我想知道我可以定义的数组的最大大小(作为命令行参数),而不会出现 OutOfMemory 异常。现在我正试图以二进制搜索的方式在大值和小值之间交替。
有更好的解决方案吗?还有..是什么决定了实际系统中的这个价值?
java Arrays 7890000 ===> 线程“main”中的异常 java.lang.OutOfMemoryError
java 数组 7890 ===> 最大值为 0.9999444707701561
public class Arrays {
public static void main(String[] args ) {
int N = Integer.parseInt(args[0]);
//Initialize to rnadom values between 0 and 1
double[] a = new double[N];
for ( int i=0; i<N;i++)
a[i] = Math.random();
//find the maximum
double max = Double.NEGATIVE_INFINITY;
for (int i = 0; i < N ;i++)
if(a[i] > max ) max = a[i];
System.out.println("Max is "+max);
}
}