Я рассматриваю два подхода для вычисления максимума/минимума массива.Вычисление максимального/минимального значения из массива наиболее эффективно в java
Первое:
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];
}
}
}
}
Второй подход был бы предварительно сортировки массива, а затем получить обр [0] как минимумы и последнего вхождения тэ массива как максимумов.
как я знаю, самые быстрые алгоритмы сортировки равны 0 (n log n). Петля от первого подхода займет 0 (n). Но с n сравнениями и, в худшем случае, n письменными операциями. Поскольку Time-messurement в java на самом деле не заслуживает доверия, необходимо оформить этот вопрос ... Я бы предпочел Первый метод .. я прав? особенно если мне нужны оба экстремума и, следовательно, нужно < = n² записи-операции. На сколько методов вызовы с тем же массивом, что и предварительная сортировка? наилучшими пожеланиями, Jan
Проблема с предварительно отсортированным массивом заключается в том, что вам нужно отсортировать его снова после вставки нового элемента, который в лучшем случае будет выполнять операцию O (N) – sethi
. После сборки Array никогда не будет затронут. Это то, «тем же массивом» –
Предварительная сортировка означает, что min/max равен O (1), и это, конечно, лучше, чем O (N), но вы по-прежнему платите за сортировку. Я не уверен, что вы спрашиваете здесь. – CPerkins