РУҚА
Задания № 6, 10 · ЕГЭ

Перебор массива

Как последовательно просматривать элементы массива для поиска, подсчёта и изменения данных
5 мин чтенияСложность: Обновлено 29 сентября 2026

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

Идея последовательного перебора

Перед началом работы важно различать сам массив и его индекс. Элемент массива — это значение, расположенное в ячейке с определённым индексом. В большинстве языков программирования индексы начинаются с 0, поэтому для массива из \(n\) элементов допустимы индексы от \(0\) до \(n-1\). В школьных алгоритмах и некоторых вариантах Паскаля нумерация может начинаться с 1. Всегда проверяйте, какая нумерация используется в условии и коде.

D
Перебор массива

Перебор массива — выполнение одинаковых действий для каждого элемента массива в заданном порядке. Чаще всего используется цикл for, реже — цикл while.

\[i=0,1,2,\ldots,n-1\]

Переменная \(i\) называется индексом или счётчиком цикла. На каждом шаге она принимает очередное значение, а программа обращается к элементу \(a[i]\). Общая схема такова: прочитать элемент, проверить условие или выполнить действие, перейти к следующему индексу.

Python
for i in range(n):
    x = a[i]
    # обработка элемента x
Pascal
for i := 1 to n do
begin
  x := a[i];
  { обработка элемента x }
end;
T
Правило границ

Если массив содержит \(n\) элементов и индексация начинается с нуля, цикл должен просмотреть индексы от \(0\) до \(n-1\). Если индексация начинается с единицы, границы — от \(1\) до \(n\). Выход за эти границы приводит к обращению к несуществующему элементу.

Типовые действия при переборе

Один и тот же цикл может решать разные задачи. Отличается главным образом начальное значение вспомогательной переменной и действие внутри цикла.

  • Подсчёт: увеличить счётчик, если элемент удовлетворяет условию.
  • Сумма: прибавить очередной элемент к накопленной сумме.
  • Поиск: сравнить элемент с искомым значением и запомнить результат.
  • Выбор минимума или максимума: сравнивать элементы с текущим лучшим значением. Подробный случай разобран на странице минимума и максимума в массиве.
  • Преобразование: заменить элемент новым значением, например увеличить все положительные элементы в два раза.
\[count=\sum_{i=0}^{n-1}[условие(a[i])]\]

Здесь квадратные скобки означают индикатор условия: они равны 1, если условие истинно, и 0 — если ложно. На практике вместо такой математической записи используется if.

Python
count = 0
for x in a:
    if x > 0:
        count += 1

Этот фрагмент считает положительные элементы. Начальное значение count = 0 обязательно: до просмотра массива найдено ноль подходящих элементов. Аналогично сумма обычно начинается с нуля, а произведение — с единицы. Среднее арифметическое нельзя вычислять до проверки, что количество выбранных элементов не равно нулю; отдельная страница посвящена среднему арифметическому элементов массива.

Проверь себя

Что окажется в переменной count после выполнения кода для массива [-2, 0, 4, 7]?

Как правильно строить алгоритм

Перед написанием цикла полезно назвать величину, которую требуется получить, и определить её начальное значение. Затем нужно выбрать условие обработки и способ обновления результата. Например, для количества элементов, больших \(k\), нужны переменная-счётчик, начальное значение 0, проверка a[i] > k и увеличение счётчика на 1.

ЗадачаНачальное значениеДействие внутри цикла
Количество элементов по условию0если условие истинно, увеличить на 1
Сумма выбранных элементов0если условие истинно, прибавить элемент
Произведение выбранных элементов1если условие истинно, умножить на элемент
Поиск значенияложь или специальный признакпри совпадении запомнить результат
Преобразованиемассив уже заполненизменить \(a[i]\) при выполнении условия
Приём для чтения программы

Сначала найдите границы цикла, затем определите, какой элемент рассматривается на шаге, и только после этого анализируйте условие и изменение переменных. Так легче не перепутать индекс, значение элемента и накопленный результат.

Разобранный пример: сумма и количество

Дан массив из \(n\) целых чисел. Требуется найти среднее арифметическое положительных элементов. Если положительных элементов нет, вывести сообщение об отсутствии результата.

№
План решения

Одного перебора достаточно. Во время него будем хранить сумму положительных элементов sum и их количество count. После цикла вычислим sum / count, но только если count > 0.

1
До начала просмотра ещё не найдено ни одного положительного элемента, поэтому сумма равна 0, а количество равно 0.
\(\displaystyle sum=0,\quad count=0\)
2
Если текущий элемент положителен, он должен войти в сумму и увеличить количество найденных элементов.
\(\displaystyle a[i]>0\Rightarrow sum\leftarrow sum+a[i],\quad count\leftarrow count+1\)
3
После просмотра всех элементов среднее равно сумме выбранных элементов, делённой на их количество.
\(\displaystyle \overline{x}=\frac{sum}{count},\quad count>0\)
Python
sum_positive = 0
count = 0

for x in a:
    if x > 0:
        sum_positive += x
        count += 1

if count > 0:
    average = sum_positive / count
    print(average)
else:
    print("нет положительных элементов")

Рассмотрим массив \([-3, 5, 2, -1]\). После обработки \(-3\) значения не меняются. После 5 получаем sum = 5, count = 1. После 2 — sum = 7, count = 2. Последний элемент отрицательный, поэтому итоговое среднее равно \(7/2=3{,}5\).

!
Частые ошибки

1. Неправильные границы: цикл идёт до \(n\), хотя последний индекс равен \(n-1\).<br>2. Забытое начальное значение: счётчик или сумма используют случайное значение.<br>3. Изменение не той переменной: вместо a[i] меняют индекс i.<br>4. Лишнее условие: ноль ошибочно считают положительным или отрицательным.<br>5. Деление на ноль: среднее вычисляют при count = 0.<br>6. Смешение индекса и значения: i — номер ячейки, а a[i] — её содержимое.<br>7. Изменение массива при поиске: если задача требует только найти ответ, не нужно менять элементы.

Перебор с изменением массива

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

Python
for i in range(len(a)):
    if a[i] < 0:
        a[i] = -a[i]

После такого прохода все элементы становятся неотрицательными. Для простого чтения можно использовать for x in a, но для изменения обычно нужен for i in range(len(a)). Ввод и вывод массива рассматриваются на соседних страницах ввода массива и вывода массива. Если обрабатывать нужно только часть массива, сначала изучите обработку отрезка массива. Обратный порядок просмотра разобран на странице обратного перебора массива.

Что запомнить

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

Q
Быстрый тест по теме

Быстрая проверка

~ 2 мин4 вопроса
Вопрос 1 / 4
Вопрос 1 из 4 · границы
Какой последний индекс у массива из 8 элементов при индексации с нуля?
Главное за минуту

Итоги

  • Перебор последовательно рассматривает каждый элемент массива в заданных границах.
  • Для индексации с нуля используются индексы от 0 до \(n-1\).
  • Счётчик, сумма и произведение требуют правильной инициализации до начала цикла.
  • Условие внутри цикла определяет, какие элементы учитывать или изменять.
  • Для изменения элемента обращаются к a[i] и записывают новое значение обратно.
  • Перед делением на количество найденных элементов нужно убедиться, что оно не равно нулю.