На Горох
Информатика, 8 класс

§ 22. Алгоритмы обработки массивов

"Информатика", Поляков К.Ю., Еремин Е.А.

Объяснение темы В оглавлении: § 22. Алгоритмы обработки массивов

Кратко о теме

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

Объяснение темы

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

Определения и обозначения

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

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

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

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

Как это устроено

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

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

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

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

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

Основные алгоритмы обработки массива

ЗадачаЧто просматриваетсяОсновная переменная или действиеРезультат
Вычисление суммы элементовВсе элементы массиваК накопленной сумме прибавляется очередной элементСумма элементов
Вычисление среднего арифметическогоВсе элементы массиваСначала накапливается сумма, затем делится на количество элементовСреднее значение
Подсчёт элементов с условиемВсе элементы массиваСчётчик увеличивается при выполнении условияКоличество подходящих элементов
Поиск минимума или максимумаВсе элементы массива после первогоТекущий экстремум заменяется при необходимостиЗначение экстремального элемента
СортировкаНесколько проходов по массивуСравнение и перестановка элементовУпорядоченный массив

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

Разбор задач

Сумма положительных элементов

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

  1. Создаём переменную суммы и задаём ей значение 0.
  2. Организуем цикл по индексам от первого элемента до десятого.
  3. На каждом шаге проверяем, больше ли текущий элемент нуля.
  4. Если условие верно, прибавляем элемент к сумме; иначе оставляем сумму без изменения.
  5. После завершения цикла выводим накопленное значение.

Ответ. Алгоритм возвращает сумму всех положительных элементов массива. Если положительных чисел нет, результатом будет 0, потому что накопитель не изменится.

Минимум и его порядковый номер

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

  1. Записываем первый элемент массива в переменную минимума, а его индекс — в переменную позиции.
  2. Просматриваем остальные элементы, начиная со второго.
  3. Если очередное значение меньше текущего минимума, сохраняем его как новый минимум.
  4. Одновременно записываем индекс найденного элемента в переменную позиции.
  5. После цикла переводим индекс в порядковый номер, если отсчёт в задаче начинается с единицы.

Ответ. Получаем минимальное значение и номер элемента, на котором оно встретилось. При нескольких одинаковых минимумах такой алгоритм сохранит номер первого из них, если условие замены строгое: «меньше».

Сортировка по возрастанию

Условие. Упорядочить массив из 8 чисел по возрастанию методом последовательных сравнений и перестановок. Соседние элементы должны стоять так, чтобы левый не был больше правого. Если пара нарушает это правило, её нужно поменять местами.

  1. Выполняем несколько проходов по массиву, на каждом проходе рассматриваем соседние пары.
  2. Сравниваем левый и правый элементы текущей пары.
  3. Если левый больше правого, меняем их местами; если нет — оставляем как есть.
  4. Продолжаем сравнения до конца прохода, затем начинаем следующий.
  5. После достаточного числа проходов проверяем, что каждая соседняя пара расположена по возрастанию.

Ответ. В массиве те же восемь чисел, но после сортировки они идут от меньшего к большему. Например, для последовательности 5, 2, 4 результатом будет 2, 4, 5.

Типичные ошибки

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

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

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

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

Связь с другими темами

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

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

  • Элементы массива обрабатывают по индексам в цикле.
  • Для суммы используют переменную-накопитель.
  • Для подсчёта элементов используют счётчик.
  • При поиске минимума или максимума нужно правильно выбрать начальное значение.
  • Если нужен номер элемента, вместе со значением сохраняют его индекс.
  • Сортировка изменяет порядок элементов массива с помощью сравнений и перестановок.

Частые вопросы по теме

Почему нельзя всегда начинать поиск минимума с нуля?

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

Как найти не только максимальное значение, но и его индекс?

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

Чем отличается подсчёт элементов от вычисления суммы?

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

Зачем выполнять несколько проходов по массиву при сортировке?

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

Как изменить алгоритм, чтобы сортировать массив по убыванию?

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

Спросить по теме параграфа

§ 22. Алгоритмы обработки массивов

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Класс
8 класс
Учебник
"Информатика", Поляков К.Ю., Еремин Е.А.