Среднее массива: примеры на Python, C++, JS и C

Что такое задача
Дан массив чисел arr. Нужно вычислить среднее значение массива (mean).
Примеры:
arr = [1, 2, 3, 4, 5, 6, 7, 8]
Среднее = (1+2+3+4+5+6+7+8)/8 = 4.5
arr = [1, 1, 1, 1, 1, 1]
Среднее = 1
Формула: среднее = сумма всех элементов / количество элементов.
Подход к решению
Простой пошаговый алгоритм:
- Инициализируйте переменную sumOfElements = 0.
- Пройдитесь по элементам массива и добавьте каждый элемент к sumOfElements.
- Верните sumOfElements / sizeOfArray.
Вычислительная сложность: O(n) по времени и O(1) по дополнительной памяти.
Важно: нужно обработать случай пустого массива (деление на ноль) и учесть возможный переполнение при суммировании очень больших целых чисел.
C++ — пример программы
Ниже приведён оригинальный C++ пример для вычисления среднего массива.
// C++ program to find the mean of an array
#include
using namespace std;
float calculateMean(int arr[], int size)
{
int sumOfElements = 0;
for(int i=0; i Вывод программы (оригинальный):
Array 1:
1 2 3 4 5 6 7 8
Mean of the array: 4.5
Array 2:
1 1 1 1 1 1
Mean of the array: 1Python — пример программы
Оригинальный пример на Python вычисляет среднее простым суммированием.
# Python program to find the mean of an array
def calculateMean(arr, size):
sumOfElements = 0
for i in range(size):
sumOfElements += arr[i]
return sumOfElements/size
def printListElements(arr, size):
for i in range(size):
print(arr[i], end=" ")
print()
arr1 = [1, 2, 3, 4, 5, 6, 7, 8]
size1 = len(arr1)
print("Array 1:")
printListElements(arr1, size1)
print("Mean of the array:", calculateMean(arr1, size1))
arr2 = [1, 1, 1, 1, 1, 1]
size2 = len(arr2)
print("Array 2:")
printListElements(arr2, size2)
print("Mean of the array:", calculateMean(arr2, size2))Вывод:
Array 1:
1 2 3 4 5 6 7 8
Mean of the array: 4.5
Array 2:
1 1 1 1 1 1
Mean of the array: 1.0Совет: для реальных задач на Python можно использовать встроенные sum() и len(): mean = sum(arr) / len(arr). Для массивов NumPy — numpy.mean.
JavaScript — пример программы
Оригинальный пример на JavaScript:
// JavaScript program to find the mean of an array
function calculateMean(arr, size) {
let sumOfElements = 0;
for(let i=0; iВывод (в браузере):
Array 1:
1 2 3 4 5 6 7 8
Mean of the array: 4.5
Array 2:
1 1 1 1 1 1
Mean of the array: 1C — пример программы
Оригинальный пример на C:
// C program to find the mean of an array
#include
float calculateMean(int arr[], int size)
{
int sumOfElements = 0;
for(int i=0; i Вывод:
Array 1:
1 2 3 4 5 6 7 8
Mean of the array: 4.500000
Array 2:
1 1 1 1 1 1
Mean of the array: 1.000000Когда простой подход даёт сбои или не годится
- Пустой массив: деление на ноль. Всегда проверяйте размер массива и возвращайте понятное значение или ошибку.
- Переполнение при суммировании: при очень больших целых может произойти overflow. Используйте 64‑битные типы (long long) или аккумулируйте в плавающей точке.
- Погрешности с плавающей точкой: при суммировании большого количества чисел лучше использовать устойчивые алгоритмы (см. онлайн‑алгоритм ниже).
- Ненумерические значения: если массив может содержать null/None/NaN — фильтруйте или обрабатывайте заранее.
Альтернативные и более надёжные подходы
- Использовать встроенные функции: Python — sum()/len(), JavaScript — reduce(), C++ — std::accumulate.
- Для больших потоковых данных — онлайн/итеративный метод (Welford) для устойчивого подсчёта среднего и дисперсии.
Пример простого онлайн‑алгоритма для среднего (Python):
# Онлайн подсчёт среднего (без сохранения всех элементов)
mean = 0.0
n = 0
for x in stream_of_numbers:
n += 1
mean += (x - mean) / n
# mean содержит текущее среднееЭтот метод устойчив к накоплению погрешностей и пригоден для потоковых данных.
Тестовые случаи и критерии приёмки
Критерии приёмки:
- Функция возвращает корректное среднее для обычного набора положительных целых.
- Корректно работает с отрицательными и нулевыми значениями.
- Обрабатывает пустой массив (возвращает ошибку или None/NaN по спецификации).
- Не теряет точность на большом количестве элементов или даёт предсказуемое поведение при больших значениях.
Минимальные тесты:
- [1,2,3,4,5] → 3
- [1,1,1,1] → 1
- [-1,0,1] → 0
- [] → ошибка/None
- Большой набор значений, проверьте устойчивость и отсутствие переполнения.
Быстрые проверки для собеседования и продакшена
- Интервью: объясните сложность O(n) и упомяните обработку пустого массива и переполнений.
- Код‑ревью: используйте типы, подходящие по диапазону, добавьте проверки входных данных, документируйте поведение для NaN/None.
- Продакшен: если ожидаются потоки, используйте онлайн‑алгоритм; если большие объёмы чисел с плавающей точкой — аккумулируйте с повышенной точностью.
Краткое резюме
- Среднее массива = сумма элементов / количество элементов.
- Базовый метод — односканальный, O(n) по времени, O(1) по памяти.
- Обратите внимание на пустые массивы, переполнение и погрешности с плавающей точкой.
- Используйте встроенные функции или устойчивые алгоритмы (Welford) для потоковых данных.
Факт‑бокс:
- Время: O(n)
- Память: O(1) дополнительной
- Главные риски: деление на ноль, переполнение, численная нестабильность
Глоссарий (одна строка):
- Среднее: сумма значений, делённая на количество значений.
- Массив: упорядоченная коллекция однотипных элементов, адресуемая по индексу.
Короткая памятка для соц‑превью:
Среднее массива — базовая операция: покажем формулу, код на Python/C++/JS/C и когда лучше использовать онлайн‑алгоритмы для устойчивости.
Похожие материалы
Gmail и настольные клиенты: выбор и настройка
SketchUp бесплатно: как начать 3D‑моделирование
Как создать аккаунт PlayStation Network (PSN)
Почему iPhone и iPad нагреваются и как это исправить
Как искать жильё на Airbnb для отпуска