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

27.11.2023 0 Автор : Дмитрий Николаевич
Алгоритмы обработки массивов

Сумма элементов массива

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

Для того, чтобы накапливать сумму, создадим отдельную переменную с названием amount. Классический способ решения данной задачи это выполнение перебора всех элементов массива в цикле. На каждой итерации цикла к значению переменной amount прибавляется значение очередного элемента массива.
amount = 0
for i in range(N):
  amount += A[i]
print(amount)

В таблице ниже показано как работает данный алгоритм для массива А:

0 1 2 3 4
A 5 2 8 3 1

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

Оператор i amount
1 amount = 0 0
2 i = 0 0
3 amount += A[0] 5
4 i += 1 1
5 amount += A[1] 7
6 i += 1 2
7 amount += A[2] 15
8 i += 1 3
9 amount += A[3] 18
10 i += 1 4
11 amount += A[4] 19

Нашим движком подсветки синтаксиса выделены команды, которые выполняются автоматически в цикле по переменной: в строке 2 переменной i присваивается начальное значение, а в строках 4, 6, 8 и 10 после очередного повторения цикла значение этой переменной увеличивается на единицу.

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

amount = 0
for x in A:
  amount += x
print(amount)

Стоит отметить, что при этом не нужно хранить размер массива в переменной.

Более того, в Python есть встроенная функция sum, которая сразу считает сумму элементов массива, так что задача решается в одну строку:

print(sum(A))

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

product = 1
for x in A:
  product *= x
print(product)