Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как найти максимум и минимум в массиве

Короткий ответ

Поток по массиву чисел умеет находить максимум и минимум:

void main() {
    int[] numbers = {7, 2, 9, 4};
 
    IO.println(Arrays.stream(numbers).max().getAsInt());
    IO.println(Arrays.stream(numbers).min().getAsInt());
}

Результат:

9
2

Всё сразу

summaryStatistics() за один проход считает минимум, максимум, сумму и среднее:

void main() {
    int[] numbers = {7, 2, 9, 4};
    IntSummaryStatistics stats = Arrays.stream(numbers).summaryStatistics();
 
    IO.println(stats.getMin() + " " + stats.getMax() + " " + stats.getAverage());
}

Результат:

2 9 5.5

Циклом

Классический способ: запомнить первый элемент и сравнивать с ним остальные:

void main() {
    int[] numbers = {7, 2, 9, 4};
    int max = numbers[0];
    for (int n : numbers) {
        if (n > max) {
            max = n;
        }
    }
    IO.println(max);
}

Результат:

9

Массив объектов

Для объектов передайте компаратор по нужному полю:

record Product(String name, double price) {}
 
void main() {
    Product[] products = {new Product("Tea", 3.5), new Product("Cake", 12.0), new Product("Water", 1.2)};
 
    Product cheapest = Arrays.stream(products).min(Comparator.comparingDouble(Product::price)).orElseThrow();
    IO.println(cheapest.name());
}

Результат:

Water

Частая ошибка

Начать поиск максимума с нуля. Если все числа отрицательные, ответ получится неверным:

void main() {
    int[] numbers = {-5, -2, -9};
    int max = 0;
    for (int n : numbers) {
        max = Math.max(max, n);
    }
    IO.println(max);
}

Результат:

0

Начинайте с первого элемента массива или с Integer.MIN_VALUE.

Функции из этого ответа

  • Arrays.stream() — Создаёт поток (stream) из массива — для сумм, фильтров и преобразований.
  • IntStream.average() — Вычисляет среднее арифметическое чисел потока.
  • Collections.max() — Находит наибольший элемент коллекции.
  • Math.max() — Возвращает большее из двух чисел.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.