Поиск минимума и максимума
Поиск минимума и максимума — это последовательный просмотр элементов, во время которого запоминаются наименьший и наибольший найденные элементы. Такой алгоритм позволяет найти оба значения за один перебор элементов массива.
Как работает алгоритм
Сначала первый элемент принимают за текущие минимум и максимум. Затем последовательно рассматривают остальные элементы. Если очередной элемент меньше текущего минимума, минимум заменяют; если он больше текущего максимума, заменяют максимум. Такая инициализация корректна даже тогда, когда все числа отрицательные.
a = [7, -2, 5, -9, 3] minimum = a[0] maximum = a[0] for x in a[1:]: if x < minimum: minimum = x if x > maximum: maximum = x print(minimum, maximum) # -9 7
Для последовательности \(4, -1, 6, 2\) сначала min = max = 4. После просмотра \(-1\) минимумом становится \(-1\), после просмотра \(6\) максимумом становится \(6\). Число \(2\) ничего не изменяет. Ответ: минимум \(-1\), максимум \(6\).
Нельзя начинать поиск с нуля: если все элементы положительные, минимум может оказаться больше нуля, а если все отрицательные, максимум может быть меньше нуля. Используйте первый элемент последовательности или специальные бесконечные значения.
Как правильно найти минимум в последовательности \(-5, -2, -8\)?
Алгоритм требует \(n-1\) сравнений для каждого из двух значений и имеет линейную сложность \(O(n)\). Найденные минимум и максимум можно использовать дальше, например передать в сортировку выбором или сравнить с результатом поиска в массиве.
Главное
- Минимум — наименьший, а максимум — наибольший элемент последовательности.
- Начинайте с первого элемента и обновляйте значения при каждом сравнении.
- Один проход по \(n\) элементам имеет сложность \(O(n)\).