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

Массив — это структура данных, которая хранит элементы в смежных ячейках памяти. Это одна из самых часто используемых структур в программировании. Знание базовых операций с массивом важно для написания эффективного кода и подготовки к собеседованиям.
Что мы рассмотрим
- Поиск минимума и максимума с помощью стандартных библиотек.
- Реализация собственных функций для поиска минимума и максимума.
- Когда стандартные функции не подходят и какие есть альтернативы.
- Проверки, тесты и чеклист для подготовки к интервью.
Поиск минимума и максимума с помощью стандартных функций
Ниже приведены примеры для C++, Python и JavaScript, которые используют встроенные функции для поиска минимального и максимального элемента.
C++ — использование max_element() и min_element()
Функции max_element() и 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 Вывод выполнения программы:
Array 1:
1 2 3 4 5 6
Maximum element in the array: 6
Minimum element in the array: 1
Array 2:
34 26 32 76 11 87
Maximum element in the array: 87
Minimum element in the array: 11
Array 3:
65 56 -90 345 52 76 23
Maximum element in the array: 345
Minimum element in the array: -90Python — использование max() и min()
Функции max() и min() работают для любой итерируемой коллекции, в том числе списков (list).
# Python program to find the maximum and minimum elements in an array
# using max() and min() functions
def printListElements(arr, size):
for i in range(size):
print(arr[i], end=" ")
print()
arr1 = [1, 2, 3, 4, 5, 6]
size1 = len(arr1)
print("Array 1:")
printListElements(arr1, size1)
print("Maximum element in the array:", max(arr1))
print("Minimum element in the array:", min(arr1))
arr2 = [34, 26, 32, 76, 11, 87]
size2 = len(arr2)
print("Array 2:")
printListElements(arr2, size2)
print("Maximum element in the array:", max(arr2))
print("Minimum element in the array:", min(arr2))
arr3 = [65, 56, -90, 345, 52, 76, 23]
size3 = len(arr3)
print("Array 3:")
printListElements(arr3, size3)
print("Maximum element in the array:", max(arr3))
print("Minimum element in the array:", min(arr3))
Вывод программы:
Array 1:
1 2 3 4 5 6
Maximum element in the array: 6
Minimum element in the array: 1
Array 2:
34 26 32 76 11 87
Maximum element in the array: 87
Minimum element in the array: 11
Array 3:
65 56 -90 345 52 76 23
Maximum element in the array: 345
Minimum element in the array: -90JavaScript — Math.max.apply() и Math.min.apply()
До появления spread-оператора было принято использовать Math.max.apply(Math, arr). Этот приём возвращает максимальное/минимальное значение из массива.
// JavaScript program to find the maximum and minimum elements in an array
// using Math.max.apply() and Math.min.apply() functions
function printArrayElements(arr, size) {
for(let i=0; iВывод программы:
Array 1:
1 2 3 4 5 6
Maximum element in the array: 6
Minimum element in the array: 1
Array 2:
34 26 32 76 11 87
Maximum element in the array: 87
Minimum element in the array: 11
Array 3:
65 56 -90 345 52 76 23
Maximum element in the array: 345
Minimum element in the array: -90Важно: в современных версиях JavaScript вместо apply рекомендуется использовать spread-оператор: Math.max(…arr).
Поиск минимума и максимума с помощью собственной функции
Если вы хотите контролировать проход по массиву или избежать дополнительных аллокаций, можно написать простую функцию, которая за один проход найдёт минимум и максимум.
C++ — собственные функции
// C++ program to find the maximum and minimum elements in an array
#include
using namespace std;
// Function to find the maximum element in the array
int findMaximumElement(int arr[], int size)
{
int maxElement = arr[0];
for (int i=0; imaxElement)
{
maxElement = arr[i];
}
}
return maxElement;
}
// Function to find the minimum element in the array
int findMinimumElement(int arr[], int size)
{
int minElement = arr[0];
for (int i=0; i Вывод примера идентичен показанным выше.
Python — собственные функции
# Python program to find the maximum and minimum elements in an array
# Function to find the maximum element in the array
def findMaximumElement(arr, size):
maxElement = arr[0]
for i in range(size):
if arr[i]>maxElement:
maxElement = arr[i]
return maxElement
# Function to find the minimum element in the array
def findMinimumElement(arr, size):
minElement = arr[0]
for i in range(size):
if arr[i]JavaScript — собственные функции
// JavaScript program to find the maximum and minimum elements in an array
// Function to find the maximum element in the array
function findMaximumElement(arr, size) {
var maxElement = arr[0];
for (let i=0; imaxElement) {
maxElement = arr[i];
}
}
return maxElement;
}
// Function to find the minimum element in the array
function findMinimumElement(arr, size) {
var minElement = arr[0];
for (let i=0; i Когда стандартные функции не подходят — типичные случаи
- Пустой массив: max()/max_element() вызовут ошибку или UB. Всегда проверяйте размер массива перед вызовом.
- Несколько критериев сравнения: если элементы — структуры, нужно передать компаратор (C++) или ключ (Python: key=…).
- Большие объёмы данных в ограниченной памяти: сортировка O(n log n) дорогостоящая; предпочтительна одномоментная O(n) операция.
Альтернативные подходы
- Сортировка массива (std::sort, arr.sort()) и чтение первого/последнего элемента — просто, но дороже по времени: O(n log n).
- Однопроходный алгоритм (как в разделе с собственными функциями) — оптимален по времени O(n) и памяти O(1).
- Для потоковых данных используйте скользящий минимум/максимум или структуры данных (deque) в зависимости от окна.
Минимальная методология (cheat sheet)
- Всегда проверяйте пустой массив.
- Для числовых массивов используйте стандартные функции, чтобы уменьшить вероятность ошибки.
- Для пользовательских типов передавайте компаратор/ключ.
- В продакшн-коде добавьте unit-тесты на граничные случаи и отрицательные значения.
Набор тестов и критерии приёмки
- Пустой массив -> функция возвращает ошибку/None/явное значение, не падение программы.
- Одноэлементный массив -> min == max == элемент.
- Все элементы одинаковы -> min == max == значение.
- Наличие отрицательных и положительных чисел.
- Большой массив (например, >10^5 элементов) — проверка производительности.
Чеклист для интервью и практики
Для студента/разработчика:
- Поясните сложность выбранного алгоритма (временная и по памяти).
- Назовите альтернативы и почему они хуже/лучше в конкретном контексте.
- Напишите код, который корректно обрабатывает пустые массивы.
Для интервьюера:
- Попросите оценить сложность и предложить тест-кейсы.
- Попросите обработать особые случаи: пустой массив, нечисловые элементы, большие объёмы данных.
Краткая справка и модели мышления
- Модель «один проход» (one-pass): просмотреть элементы подряд и поддерживать текущий минимум и максимум.
- Модель «сортировка»: привести к упорядоченному виду и взять края — проще, но дороже.
- Модель «редукция/агрегация»: использовать функции высшего порядка (reduce, accumulate) для декларативного стиля.
Резюме
- Для большинства задач используйте стандартные функции (C++: max_element/min_element, Python: max/min, JS: Math.max/Math.min или spread).
- Если важна скорость и память, реализуйте одномоментный проход и проверяйте граничные случаи.
- Включите тесты: пустые массивы, одноэлементные, одинаковые элементы и большие входы.
Важно: всегда думайте о граничных условиях и типах данных, прежде чем выбирать решение.
Related: Как найти сумму всех элементов в массиве
Related: Введение в алгоритм сортировки слиянием
Related: Методы работы с массивами в JavaScript, которые стоит знать
Похожие материалы
Бесплатные шрифты, похожие на платные: лучшие способы
Проверить число циклов батареи в Windows
Nessus на Kali Linux: установка и запуск
Редактирование фото в Adobe Camera Raw
Настройка и использование ADB на Android