Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции программирование.doc
Скачиваний:
25
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

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

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

program poisk_max;

var

a:array[1..20] of integer;

i,max:integer;

begin

randomize;

for i:=1 to 20 do

begin

a[i]:=1+random(99); write(a[i],’ ’);

end; writeln;

max:=a[1];

for i:=2 to 20 do

if a[i]>max then max:=a[i];

writeln(’Наибольший элемент массива = ’,max);

readln;

end.

аибольшее число.

Минимальный элемент находят так же, только ищут число, меньшее, чем min.

Иногда кроме самого значения максимального элемента нужно найти и место, где он располагается. Для этого в цикле поиска, найдя число большее, чем было найдено раньше, нужно запомнить не только его само, но и его номер, как показано в следующем фрагменте:

Сортировка массива.

Существует много способов сортировки массива по возрастанию. Самый понятный и простой (но далеко не самый быстрый!) – сортировка обменом. Суть его в следующем: Программа ищет наименьший элемент и обменивает его с первым. Затем ищет наименьший из оставшихся и обменивает со вторым… Для обмена мы пользуемся тем, что, кроме массива, наименьшее число находится ещё в переменной min, поэтому на его место в массиве мы копируем число из начальных элементов массива, а туда копируем число из переменной min.

program sortirovka_obmenom;

var

a:array[1..20] of integer;

i,k,min,Nmin:integer;

begin

randomize; {Сначала заполним массив}

for i:=1 to 20 do

begin

a[i]:=1+random(99); write(a[i]:3);

end; writeln;

{Отсортируем по возраст. методом обмена}

for i:=1 to 19 do

begin {i показывает начало поиска}

min:=a[i]; Nmin:=i;

{просмотрим все остальные (после i)}

for k:=i+1 to 20 do

if a[k]<min then

begin

min:=a[k]; Nmin:=k;

end;

{Нашли минимальное число. Обменяем его с i-м}

a[Nmin]:=a[i]; a[i]:=min;

end;

{Теперь распечатаем отсортированный массив}

for i:=1 to 20 do

write(a[i]:3);

end.

Второй по простоте (и тоже медленный) способ – сортировка методом пузырька. Суть её в том, что при первом проходе каждый элемент сравнивается со следующим, и если порядок неправильный, они обмениваются. Для обмена используется переменная b, в которой временно сохраняется число. После первого прохода наибольший элемент уже на своём месте (в конце массива), поэтому второй проход делается до предпоследнего элемента, и т.д. … В приведенном фрагменте программы, сортирующем массив a по возрастанию методом пузырька, первый цикл считает проходы, а его счётчик i указывает, до какого элемента делать проверку (поэтому i уменьшается).