配列の最大値/最小値を計算するための 2 つのアプローチを検討します。
初め:
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];
}
}
}
}
2 番目のアプローチは、配列を事前に並べ替えてから、arr[0] を最小値として取得し、配列の最後のエントリを最大値として取得することです。
私が知っているように、最速のソートアルゴリズムは 0(n log n) です。最初のアプローチからのループには 0(n) 時間がかかります。ただし、n回の比較と最悪の場合n回の書き込み操作があります。Javaでの時間測定は本当に信頼できないので、この質問を形式化する必要があります...私は最初の方法を好むでしょう..私は正しいですか? 特に両方の極値が必要なため、<=n² の書き込み操作が必要な場合。同じ配列の事前ソートを使用したメソッド呼び出しの数は理にかなっていますか? よろしく、 ヤン