Гид по технологиям

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

3 min read Алгоритмы Обновлено 17 Apr 2026
Среднее массива: примеры на Python, C++, JS и C
Среднее массива: примеры на 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

Формула: среднее = сумма всех элементов / количество элементов.

Подход к решению

Простой пошаговый алгоритм:

  1. Инициализируйте переменную sumOfElements = 0.
  2. Пройдитесь по элементам массива и добавьте каждый элемент к sumOfElements.
  3. Верните 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: 1

Python — пример программы

Оригинальный пример на 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: 1

C — пример программы

Оригинальный пример на 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. [1,2,3,4,5] → 3
  2. [1,1,1,1] → 1
  3. [-1,0,1] → 0
  4. [] → ошибка/None
  5. Большой набор значений, проверьте устойчивость и отсутствие переполнения.

Быстрые проверки для собеседования и продакшена

  • Интервью: объясните сложность O(n) и упомяните обработку пустого массива и переполнений.
  • Код‑ревью: используйте типы, подходящие по диапазону, добавьте проверки входных данных, документируйте поведение для NaN/None.
  • Продакшен: если ожидаются потоки, используйте онлайн‑алгоритм; если большие объёмы чисел с плавающей точкой — аккумулируйте с повышенной точностью.

Краткое резюме

  • Среднее массива = сумма элементов / количество элементов.
  • Базовый метод — односканальный, O(n) по времени, O(1) по памяти.
  • Обратите внимание на пустые массивы, переполнение и погрешности с плавающей точкой.
  • Используйте встроенные функции или устойчивые алгоритмы (Welford) для потоковых данных.

Факт‑бокс:

  • Время: O(n)
  • Память: O(1) дополнительной
  • Главные риски: деление на ноль, переполнение, численная нестабильность

Глоссарий (одна строка):

  • Среднее: сумма значений, делённая на количество значений.
  • Массив: упорядоченная коллекция однотипных элементов, адресуемая по индексу.

Короткая памятка для соц‑превью:

Среднее массива — базовая операция: покажем формулу, код на Python/C++/JS/C и когда лучше использовать онлайн‑алгоритмы для устойчивости.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Gmail и настольные клиенты: выбор и настройка
Почта

Gmail и настольные клиенты: выбор и настройка

SketchUp бесплатно: как начать 3D‑моделирование
3D моделирование

SketchUp бесплатно: как начать 3D‑моделирование

Как создать аккаунт PlayStation Network (PSN)
Руководство

Как создать аккаунт PlayStation Network (PSN)

Почему iPhone и iPad нагреваются и как это исправить
Мобильные устройства

Почему iPhone и iPad нагреваются и как это исправить

Как искать жильё на Airbnb для отпуска
Путешествия

Как искать жильё на Airbnb для отпуска

Arduino Pong: ретро-игра на TV
Arduino

Arduino Pong: ретро-игра на TV