12. Типові алгоритми пошуку максимуму та мінімуму

У цьому розділі ми вивчимо найпростіші статистичні алгоритми, головний з яких - визначення максимального та мінімального значень на множині даних.

Розглянемо алгоритм у загальному вигляді:

описати для кожного максимуму та мінімуму по одній змінній того ж типу, що аналізовані дані;

до циклу максимуму присвоюється або заздалегідь мале для аналізованих даних значення, або перший елемент даних; мінімуму присвоюється або заздалегідь велике для аналізованих даних значення, або перший елемент даних;

у тілі циклу кожен підходящий для пошуку елемент даних t обробляється операторами виду: if t&max then max:=t; - Для максимуму; if t max не виконається жодного разу і відповіддю буде max, що дорівнює нулю, що неправильно. Вибірнаперед малогопочаткового значення max (наприклад, значення -1E30, тобто, -10 30 , навряд чи зустрінеться в будь-яких реальних даних) гарантує, що умова t>max виконається хоча б раз і максимум буде знайдено. Альтернативний спосіб - присвоїти змінній max значення окремо обчисленого першого елемента послідовності даних. У цьому випадку відповідь або вже знайдена, якщо перший елемент і є максимальна, або буде знайдена в циклі.

Аналогічні міркування допомагають зрозуміти, чому мінімуму слід присвоювати як початкове значення заздалегідь велике число.

Перейдемо до прикладів. Для функції y(x)=sin 2 (x),

мінімуму
знайти мінімальне серед позитивних та максимальне значення.

Позначивши значення min і max відповідно, напишемо наступну програму:

- свідомо мале та велике для синуса>

if y max then max:=y;

writeln ('Мінімум =',min:8:2);

reset (input); readln;

У наступному прикладі додатково збережемо значенняаргументів функції, котрим знайдено мінімум і максимум.

Послідовність T(k) задана співвідношеннями T(k)=max(sin k, cos k), k=1, 2, . ,31. Знайти номери максимального та мінімального елементів послідовності.

Пошукномерівне позбавить нас необхідності пошукузначень. Тому, окрім змінних min і max, нам знадобляться дві цілі перемінні для зберігання номерів мінімального та максимального значень, позначимо їх kmin і kmax відповідно. Зверніть також увагу, що на кожному кроці циклу додатково потрібно знаходити максимальне значення sin(k) і cos(k), для занесення його в змінну t.