Алгоритм поиска минимального и максимального элемента на C++

Одним из самых частых алгоритмов, которые используются в программировании - это поиск максимального и минимального элементов в потоковом получении данных(когда данные появляются друг за другом, например, с помощью цикла).

Здесь необходимо выделить 2 случая:
- когда Вы знаете диапазон чисел, который будет приходить(например, строго трёхзначные, то есть от 100 до 999 или строго записанный диапазон от числа а до числа b);
- когда Вы не знаете диапазон чисел, который будет к вам приходить;

Рассмотрим первый случай, то есть когда вы знаете диапазон чисел:

В Этом случае вы должны перед получением данных в переменную, отвечающую за поиск минимума положить верхнюю границу диапазона, а в переменную, отвечающую за поиск максимума положить нижнюю границу диапазон, после чего в цикле просто обрабатывать числа по стандартному правилу нахождения наибольшего и наименьшего из двух.

При использовании такого алгоритма ваши максимум и минимум сменятся на адекватные значения, которые по окончанию работы цикла и будут действительным максимумом и минимумом.

Рассмотрим второй случай, когда диапазон неизвестен:

Алгоритм точно такой же за исключением того, что первоначально в минимум кладётся самое наибольшее число из используемого типа данных, а в максимум самое наименьшее число из используемого типа данных.

Границы типов данных можно найти в другой моей статье:

Пример программы по поиску минимального и максимального целого числа числа при неизвестном диапазоне:

int min = INT_MAX; //константа наибольшего числа в int
int max = INT_MIN; //константа наименьшего числа в int
int val;

for(int i=0; i<1000: i++){
cin>>val;
if(val>max){
max = val;
}
if(val<min){
min = val;
}
}

cout << "Max = " << max << endl;
cout << "Min = " << min << endl;

146146 показов
14K14K открытий
Начать дискуссию