0
package com.company;

public class Main {

public static void main(String[] args) {
    int[] a = new int[] {123, -39, 0, -783, 915, 102, -199};
    int b = 0;
    for(int i = 0; i < a.length; i++) {
        if(b < a[i])
            b = a[i];
    }
    System.out.print(b);
    }
}

Недавно начал учить java и это мой первый язык. Кто может объяснить почему b принимает значение 915, а не -199?

1 Answers1

0

Условный оператор if(b < a[i]), расположенный в цикле, проверяет исходное число b с каждым элементом массива a (перебор осуществляется с помощью вышеупомянутого цикла). В том случае, если число b оказывается меньше очередного элемента массива, то оно становится равным данному элементу.

Отсюда, в частности, следует, что рано или поздно попадётся такой элемент a[N], после которого данное условие ни разу не будет соблюдаться. Тогда мы можем сказать, что a[N] — максимальный элемент данного массива, и он рано или поздно попадёт в b.

Таким образом, если мы берём b, то данная переменная будет изменяться только тогда, когда очередной элемент массива будет больше. Рано или поздно b будет равно максимуму массива, поэтому с помощью данного алгоритма мы можем найти максимум массива. В данном случае максимумом будет 915, поэтому именно это число и будет в b.

(Кстати говоря, лучше было бы, если b изначально было бы равно a[0], а не 0. Вдруг все элементы массива были бы отрицательными?).

P.S. Если заменить знак в условии с < на >, то тогда алгоритм вычислял бы, наоборот, минимальный элемент массива и занёс бы в b число -199.

Как-то так, кажется

4500zenja
  • 3,923