Конспект лекций по программированию для начинающих. Гладков В.П. - 152 стр.

UptoLike

Составители: 

154
for i:=2 to n do
if a[j]<a[i] then j:=i;
write('номер максимального элемента ',j,' максимальный элемент ',a[i]).
Упражнения:
1. Сравните фрагменты программ поиска максимального элемента и поиска
номера максимального элемента для одинаковых схем перебора. Чем они
отличаются?
2. Что делает фрагмент приведенной ниже программы?
max:=a[1]; j:=1;
for i:=2 to n do
if a[j]<a[i] then begin max:=a[i]; j:=i; end;
write('номер максимального элемента ',j,' максимальный элемент ',a[i]).
Эффективна ли она по сравнению с программой предыдущего примера?
3. Напишите программу, которая находит номер первого (последнего) из
нескольких элементов, совпадающих
по величине с максимальным.
Другие решения задачи можно получить, если выбрать другие схемы перебора
элементов в массиве. Выберем, например, схему перебора элементов по одному,
двигаясь от обоих концов массива к середине. Обозначим через i номера
начальных элементов массива, а через j - номера последних элементов массива.
Для поиска максимального элемента нужно сравнить все
элементы между собой. В
данном случае будем сравнивать i-й и j-й элементы и изменять значение индекса
для того элемента, который оказался меньше. По окончании просмотра оба индекса
будут указывать на один и тот же элемент, он и будет являться максимальным.
i:=1; j:=n;
while i<j do
if a[i]<a[j]
then i:=i+1
else j:=j-1;
write('максимальный элемент ',a[i],' номер максимального элемента ',j).
Упражнения:
1. Выполните трассировку приведенного фрагмента для случая, когда все
элементы массива различны и когда все элементы массива равны.
2. Как, используя эту же схему перебора, найти первый (последний)
совпадающий по величине с максимальным элемент, если в массиве есть несколько
таких элементов.
Пример 11.11. Подсчитать количество элементов массива, совпадающих по
величине с максимальным.
Решение. Одним из очевидных решений будет сведение этой задачи к уже
решенным. Найти максимальный элемент можно с помощью алгоритма,
приведенного в примере 11.9. Затем, воспользовавшись алгоритмом примера 11.8,
можно подсчитать количество элементов массива, совпадающих по величине с
максимальным. Такой подход требует двойного просмотра массива. Его
реализация приведена ниже:
max:=a[1];
for i:=2 to n do
                                     154

   for i:=2 to n do
      if a[j]