• Как найти среднее число массива с помощью кода C#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Вообще, это очень похоже на "медианное среднее"
    Т.е. при помощи циклов и условных операторов, чтобы было понятно как это работает, чтобы не было скрытых действий таких, как myArray.Max. или myArray.Min.

    Я не хочу переизобретать простые операции, так что развернёшь их сам.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    var array = new[] {3, 10, 16, 2, 8};
    var result = FindMediumPoint(array);
    Console.WriteLine(string.Join(" ", result));
    
    static IEnumerable<int> FindMediumPoint(int[] sequence)
    {
    	var min = sequence.Min(); // Минимум
    	var max = sequence.Max(); // Максимум
    	var diff = max - min; // Разброс между минимумом и максимумом
    	var avg = diff / 2; // Середина "Разброса"
    	var center = min + avg;
    	var actualCenterDiffs = sequence
    		.Select(number => number - center) // Находим отклонение числа
    		.GroupBy(Math.Abs) // Группируем те числа, у которых одинаковое абсолютное отклонение
    		.OrderBy(x => x.Key) // Сортируем в порядке увеличения отклонения
    		.First(); // Берём первое по порядку (минимальное)
    	return actualCenterDiffs
    		.Select(diff => diff + center); // Применяем отклонение к найденному центру;
    }

    В коде алгоритм в принципе выглядит так, как я бы решал самостоятельно.
    Ответ написан
    Комментировать