Поиск минимального и максимального элемента массива и его положения в массиве (индекса)

A={2,4,7,3,7,1,5,6,7,3}

Пусть требуется найти минимальный элемент (min) и его индекс (n_min) во всем массиве (in=0 и ik=n) или какой-то его части (с in – го по ik ый), в этом случае алгоритм решения задачи можно записать так:

1. в качестве начального значения переменной min выберем любой из рассматриваемых элементов (обычно выбирают первый). Тогда min=ain, n_min= in;

2. затем в цикле по параметру i, начиная со следующего элемента (i=in+1, …, ik), будем сравнивать элементы массива ai текущим минимальным min. Если окажется, что текущий (i – ый) элемент массива меньше минимального (ai < min), то переменная min принимает значение ai, а n_min – значение i: min = ai, n_min = i.

Графическая схема алгоритма и фрагмент программы поиска минимального элемента в массиве приведены на рисунке 2.16.

min=a[in]; n_min=in; for(i=in+1; i<ik; i++) if(a[i]<min) { min=a[i]; n_min=i; } A={3,4,7,2,5,2,7,2,8,5,4,9,5} in=0 ik=12 min=2 n_min=3 in=10 ik=12 min=4 n_min=10

Рисунок 2.16. Графический алгоритм и фрагмент программы поиска минимального элемента в массиве

Заметим, что при наличии в массиве нескольких минимальных элементов, найден будет первый из них (самый левый минимальный элемент) при просмотре массива слева направо. Если в неравенстве ai< min знак < поменять на знак , то будет найден последний из них (самый правый минимальный элемент).

Для поиска максимального элемента max и его индекса n_max используется аналогичный алгоритм, в котором сначала надо принять max =ain, n_ max = in, вместо неравенства ai < min используется неравенство ai > max. В случаи выполнения условия ai > max записать в max=ai и в n_ max = i.

Для поиска в массиве экстремума можно не использовать вспомогательную переменную min (max). В этом случае минимальный элемент массива определяется только по его индексу n_min (n_max) (рисунок 2.17).

/*поиск минимального элемента*/ n_min=in; for(i=in+1; i<ik; i++) if(a[i]<a[n_min]) n_min=i; /*поиск максимального элемента*/ n_max=in; for(i=in+1; i<ik; i++) if(a[i]>a[n_max]) n_max=i;

Рисунок 2.17. Графическая схема алгоритма и фрагмент программы поиска минимального элемента в массиве по его индексу

Пример использования рассмотренных алгоритмов представлен в приложении 2.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: