64 votes

Calculer la médiane en c#

J'ai besoin d'écrire une fonction qui accepte un tableau de décimales et qui trouve la médiane.

Existe-t-il une fonction dans la bibliothèque mathématique de .net ?

0voto

mike Points 477

Mes 5 centimes (parce que cela semble plus direct/simple et suffisant pour les listes courtes) :

public static T Median<T>(this IEnumerable<T> items)
{
    var i = (int)Math.Ceiling((double)(items.Count() - 1) / 2);
    if (i >= 0)
    {
        var values = items.ToList();
        values.Sort();
        return values[i];
    }

    return default(T);
}

P.S. J'utilise la "médiane supérieure" telle que décrite par ShitalShah.

0voto

Dominique Mathieu Points 104

J'ai un histogramme avec la variable : groupe
Voici comment je calcule ma médiane :

int[] group = new int[nbr]; 

// -- Fill the group with values---

// sum all data in median
int median = 0;
for (int i =0;i<nbr;i++) median += group[i];

// then divide by 2 
median = median / 2;

// find 50% first part 
for (int i = 0; i < nbr; i++)
{
   median -= group[i];
   if (median <= 0)
   {
      median = i;
      break;
   }
}

median est l'indice de groupe de median

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X