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

Что такое массив
Массив — это структура данных для хранения элементов в смежных участках памяти. Простой массив позволяет быстро обращаться по индексу. (Определение: массив — упорядоченная коллекция однотипных элементов, доступных по индексу.)
Как найти минимум и максимум с помощью библиотечных функций
Ниже приведены примеры на 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
Минимальный элемент в массиве: -90Python — использование 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
Минимальный элемент в массиве: -90JavaScript — использование 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 убедитесь, что размер массива безопасен для вызова функции.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента