Знайти два максимальних елемента масиву

У масиві чисел знайти два максимальних елемента.

Дане завдання вимагає пояснень і конкретизації:

  • повинні бути рівні між собою ці елементи;
  • або вони можуть бути різними, але більше, ніж всі інші елементи. Наприклад, в масиві [4, 7, 2, 6, 9] два максимальних елемента - це числа 9 і 7.

В даному випадку будемо вважати, що треба знайти два найбільших елемента одновимірного масиву. При цьому вони можуть бути як рівні між собою, так і відрізнятися.

Завдання можна вирішити двома способами. Найбільш простий для розуміння - це використання двох переборовши масиву. У першому шукається перший максимум. У другому - другий, при цьому перший максимальний елемент виключається за допомогою умовного оператора if. Приклад коду програми:

Тут змінні max1 і max2 зберігають не значення елементів, а їх індекси (цього досить, т. К. За індексом завжди можна отримати значення).

Зверніть увагу на конструкцію if max1 = 1 then max2. = 2 else max2. = 1;. Вона необхідна з таких причин. Ми не знаємо, яке початкове значення слід привласнити змінної max2. Адже якщо перший найбільший елемент буде першим, і ми призначимо max2 значення 1, то ніколи не знайдемо другий найбільший.

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

Другий варіант вирішення завдання - коли обидва максимуму шукаються в одному циклі:

Спочатку передбачається, що перші два елементи масиву і є найбільшими. Який з них перший максимум, а який другий, визначається за допомогою конструкції if-else поза циклом. Перебір масиву починається з третього елемента. Якщо черговий елемент масиву більше першого максимального, то його індекс записується в першу змінну. (При цьому може виявитися, що раніше зберігався в max1 індекс вказував на другий максимум. Якщо це так, то він буде записаний в max2. Для цього використовується змінна buff і вкладене if.) Інакше здійснюється перевірка змінної max2.

Приклад виконання коду: