Алгоритм поиска минимального и максимального элемента на 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;