Гид по технологиям

Как найти минимум и максимум в массиве — C++, Python, JavaScript

• 4 min read • Программирование • Обновлено 22 Nov 2025
Минимум и максимум в массиве — C++, Python, JS
Минимум и максимум в массиве — C++, Python, JS

Клавиатура и мышь с логотипами C, Python, JavaScript и C++

Что такое массив

Массив — это структура данных для хранения элементов в смежных участках памяти. Простой массив позволяет быстро обращаться по индексу. (Определение: массив — упорядоченная коллекция однотипных элементов, доступных по индексу.)

Как найти минимум и максимум с помощью библиотечных функций

Ниже приведены примеры на C++, Python и JavaScript, использующие встроенные функции для поиска min и max.

C++ — использование max_element и min_element

Функции std::max_element и std::min_element возвращают итераторы на максимальный и минимальный элементы в диапазоне.

// C++ program to find the maximum and minimum elements in an array
// using max_element() and min_element() functions
#include 
using namespace std;

void printArrayElements(int arr[], int size)
{
    for(int i = 0; i < size; i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
}

int main()
{
    int arr1[] = {1, 2, 3, 4, 5, 6};
    int size1 = sizeof(arr1)/sizeof(arr1[0]);
    cout << "Массив 1:" << endl;
    printArrayElements(arr1, size1);
    cout << "Максимальный элемент в массиве: " << *max_element(arr1, arr1 + size1) << endl;
    cout << "Минимальный элемент в массиве: " << *min_element(arr1, arr1 + size1) << endl;

    int arr2[] = {34, 26, 32, 76, 11, 87};
    int size2 = sizeof(arr2)/sizeof(arr2[0]);
    cout << "Массив 2:" << endl;
    printArrayElements(arr2, size2);
    cout << "Максимальный элемент в массиве: " << *max_element(arr2, arr2 + size2) << endl;
    cout << "Минимальный элемент в массиве: " << *min_element(arr2, arr2 + size2) << endl;

    int arr3[] = {65, 56, -90, 345, 52, 76, 23};
    int size3 = sizeof(arr3)/sizeof(arr3[0]);
    cout << "Массив 3:" << endl;
    printArrayElements(arr3, size3);
    cout << "Максимальный элемент в массиве: " << *max_element(arr3, arr3 + size3) << endl;
    cout << "Минимальный элемент в массиве: " << *min_element(arr3, arr3 + size3) << endl;

    return 0;
}

Вывод программы:

Массив 1:
1 2 3 4 5 6
Максимальный элемент в массиве: 6
Минимальный элемент в массиве: 1
Массив 2:
34 26 32 76 11 87
Максимальный элемент в массиве: 87
Минимальный элемент в массиве: 11
Массив 3:
65 56 -90 345 52 76 23
Максимальный элемент в массиве: 345
Минимальный элемент в массиве: -90

Python — использование max() и min()

Функции max() и min() возвращают максимальный и минимальный элементы и работают для списков с числовыми значениями.

# Python program to find the maximum and minimum elements in an array
# using max() and min() functions

def printListElements(arr):
    for x in arr:
        print(x, end=" ")
    print()

arr1 = [1, 2, 3, 4, 5, 6]
print("Массив 1:")
printListElements(arr1)
print("Максимальный элемент в массиве:", max(arr1))
print("Минимальный элемент в массиве:", min(arr1))

arr2 = [34, 26, 32, 76, 11, 87]
print("Массив 2:")
printListElements(arr2)
print("Максимальный элемент в массиве:", max(arr2))
print("Минимальный элемент в массиве:", min(arr2))

arr3 = [65, 56, -90, 345, 52, 76, 23]
print("Массив 3:")
printListElements(arr3)
print("Максимальный элемент в массиве:", max(arr3))
print("Минимальный элемент в массиве:", min(arr3))

Вывод:

Массив 1:
1 2 3 4 5 6
Максимальный элемент в массиве: 6
Минимальный элемент в массиве: 1
Массив 2:
34 26 32 76 11 87
Максимальный элемент в массиве: 87
Минимальный элемент в массиве: 11
Массив 3:
65 56 -90 345 52 76 23
Максимальный элемент в массиве: 345
Минимальный элемент в массиве: -90

JavaScript — использование Math.max / Math.min

В JavaScript можно использовать Math.max и Math.min c spread-оператором или Function.apply. Здесь показан современный вариант через spread.

// JavaScript program to find the maximum and minimum elements in an array
// using Math.max and Math.min with spread operator

function printArrayElements(arr) {
  console.log(arr.join(' '));
}

let arr1 = [1, 2, 3, 4, 5, 6];
console.log('Массив 1:');
printArrayElements(arr1);
console.log('Максимальный элемент в массиве: ' + Math.max(...arr1));
console.log('Минимальный элемент в массиве: ' + Math.min(...arr1));

let arr2 = [34, 26, 32, 76, 11, 87];
console.log('Массив 2:');
printArrayElements(arr2);
console.log('Максимальный элемент в массиве: ' + Math.max(...arr2));
console.log('Минимальный элемент в массиве: ' + Math.min(...arr2));

let arr3 = [65, 56, -90, 345, 52, 76, 23];
console.log('Массив 3:');
printArrayElements(arr3);
console.log('Максимальный элемент в массиве: ' + Math.max(...arr3));
console.log('Минимальный элемент в массиве: ' + Math.min(...arr3));

Вывод (пример):

Массив 1:
1 2 3 4 5 6
Максимальный элемент в массиве: 6
Минимальный элемент в массиве: 1
Массив 2:
34 26 32 76 11 87
Максимальный элемент в массиве: 87
Минимальный элемент в массиве: 11
Массив 3:
65 56 -90 345 52 76 23
Максимальный элемент в массиве: 345
Минимальный элемент в массиве: -90

Как найти минимум и максимум, написав свою функцию

Если вы хотите контролировать процесс (например, чтобы обрабатывать пользовательские типы данных, игнорировать NaN или учитывать стабильность), можно написать собственную функцию прохода по массиву.

C++ — пользовательские функции поиска

// C++ program: custom functions to find max and min in an array
#include 
using namespace std;

int findMaximumElement(int arr[], int size)
{
    int maxElement = arr[0];
    for (int i = 1; i < size; i++)
    {
        if (arr[i] > maxElement)
        {
            maxElement = arr[i];
        }
    }
    return maxElement;
}

int findMinimumElement(int arr[], int size)
{
    int minElement = arr[0];
    for (int i = 1; i < size; i++)
    {
        if (arr[i] < minElement)
        {
            minElement = arr[i];
        }
    }
    return minElement;
}

void printArrayElements(int arr[], int size)
{
    for (int i = 0; i < size; i++) cout << arr[i] << " ";
    cout << endl;
}

int main()
{
    int arr[] = {65, 56, -90, 345, 52, 76, 23};
    int size = sizeof(arr)/sizeof(arr[0]);
    cout << "Массив:" << endl;
    printArrayElements(arr, size);
    cout << "Максимум: " << findMaximumElement(arr, size) << endl;
    cout << "Минимум: " << findMinimumElement(arr, size) << endl;
    return 0;
}

Python — пользовательские функции поиска

# Python program: custom functions to find max and min

def findMaximumElement(arr):
    maxElement = arr[0]
    for i in range(1, len(arr)):
        if arr[i] > maxElement:
            maxElement = arr[i]
    return maxElement

def findMinimumElement(arr):
    minElement = arr[0]
    for i in range(1, len(arr)):
        if arr[i] < minElement:
            minElement = arr[i]
    return minElement

arr = [65, 56, -90, 345, 52, 76, 23]
print('Массив:')
print(*arr)
print('Максимум:', findMaximumElement(arr))
print('Минимум:', findMinimumElement(arr))

JavaScript — пользовательские функции поиска

// JavaScript program: custom functions to find max and min

function findMaximumElement(arr) {
  let maxElement = arr[0];
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] > maxElement) maxElement = arr[i];
  }
  return maxElement;
}

function findMinimumElement(arr) {
  let minElement = arr[0];
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] < minElement) minElement = arr[i];
  }
  return minElement;
}

let arr = [65, 56, -90, 345, 52, 76, 23];
console.log('Массив:');
console.log(arr.join(' '));
console.log('Максимум: ' + findMaximumElement(arr));
console.log('Минимум: ' + findMinimumElement(arr));

Когда стандартные функции не подходят (примеры и ограничения)

  • Большие массивы и ограниченная память: spread-оператор в JavaScript (Math.max(…arr)) может упасть при очень большом arr.length. В таких случаях используйте ручной проход.
  • Нечисловые или смешанные типы: std::max_element работает по operator<, но поведение для пользовательских типов нужно определить явно.
  • Отсутствие элементов: необходимо проверять пустые коллекции и возвращать корректную ошибку или значение по умолчанию.
  • Пропуски и NaN: в JS/NumPy/Python NaN ломает сравнения — фильтруйте значения заранее.

Альтернативные подходы

  • Параллельный редукцион: на больших данных можно выполнять парралельный проход (MapReduce, OpenMP) для ускорения.
  • Предварительная сортировка: O(n log n) — неэффективно только для поиска min/max, но полезно если нужны упорядоченные данные.
  • Использование агрегатных функций в базах данных (MIN()/MAX()) для внешних источников.

Эвристики и модели принятия решений

  • Если нужно только min и max — делайте один проход O(n). Это оптимально по времени и памяти.
  • Если массив небольшой и читаемость важна — используйте встроенные функции (max/min, std::max_element).
  • Если есть вероятность пустого массива — проверяйте длину до вызова.

Чек-листы по ролям

  • Разработчик:

    • Проверить поведение для пустого массива
    • Обработать NaN/NULL/undefined
    • Добавить тесты на граничные случаи
  • Тестировщик:

    • Тесты с положительными и отрицательными числами
    • Тесты с повторяющимися значениями
    • Тесты с односторонними массивами (все равны)
  • Инженер по производительности:

    • Замерить время для больших N
    • Оценить память при использовании spread-оператора

Критерии приёмки

  • Функция возвращает корректный максимум и минимум для наборов тестов:
    • Пустой массив: ожидается исключение или специальное значение
    • Один элемент: min == max == этот элемент
    • Смешанные положительные/отрицательные
    • С повторениями

Тестовые случаи (примеры)

  • [] [] -> пустой массив → ожидается ошибка/None/exception
  • [5] -> max=5, min=5
  • [1,2,3] -> max=3, min=1
  • [3,3,3] -> max=3, min=3
  • [-1,-5,0,100] -> max=100, min=-5

Быстрая шпаргалка (cheat sheet)

  • C++: #include -> max_element(begin, end), min_element(begin, end)
  • Python: max(list), min(list)
  • JS: Math.max(…arr), Math.min(…arr) или ручной цикл

Краткий глоссарий

  • Итератор: объект, позволяющий пройти по коллекции
  • Spread-оператор: …arr — разворачивает элементы массива (JS)
  • Редукция: сведение массива к одному значению (сумма, максимум и т. п.)

Заключение

Выполняя один проход по массиву, вы получаете минимум и максимум за линейное время и постоянную дополнительную память. Используйте встроенные функции для краткости и читаемости, но учитывайте ограничения (пустые массивы, NaN, большие объемы данных). Тестируйте на граничных случаях и документируйте поведение для пустых и некорректных входных данных.

Важно: до использования spread-оператора в JavaScript убедитесь, что размер массива безопасен для вызова функции.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро