我考虑了两种计算数组最大值/最小值的方法。
第一的:
public class Extrema {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double[] arr = new double[] { -0.11112, -0.07654, -0.03902, 0.0,
0.03902, 0.07654, 0.11112, 0.14142, 0.1663, 0.18478, 0.19616 };
double max = Double.NEGATIVE_INFINITY;
// Find out maximum value
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
}
}
第二种方法是对数组进行预排序,然后将 arr[0] 作为最小值,将 te 数组的最后一个条目作为最大值。
据我所知,最快的排序算法是 0(n log n)。第一种方法的循环将花费 0(n) 时间。但是有 n 次比较,最坏的情况是 n 次写入操作。由于Java中的时间测量并不是真正可信赖的,因此有必要将这个问题形式化......我更喜欢第一种方法......我对吗?特别是如果我需要两个极值,因此需要 <=n² 写入操作。在多少个具有相同数组预排序的方法调用中有意义?最好的问候,简