将中位数方法添加到列表中
我想覆盖C#中的List对象,以便添加像Sum或Average这样的Median方法。我已经找到了这个功能:
public static decimal GetMedian(int[] array)
{
int[] tempArray = array;
int count = tempArray.Length;
Array.Sort(tempArray);
decimal medianValue = 0;
if (count % 2 == 0)
{
// count is even, need to get the middle two elements, add them together, then divide by 2
int middleElement1 = tempArray[(count / 2) - 1];
int middleElement2 = tempArray[(count / 2)];
medianValue = (middleElement1 + middleElement2) / 2;
}
else
{
// count is odd, simply get the middle element.
medianValue = tempArray[(count / 2)];
}
return medianValue;
}
你能告诉我怎么做吗?
没有找到相关结果
已邀请:
8 个回复
香腔弥胯瓤
炉挤仙挟
数组是C#中的引用类型。这会对您提供的数组进行排序,而不是副本。获得数组的中位数不应改变其顺序;它可能已经被分类到不同的顺序。 使用
首先制作数组的副本,然后对副本进行排序。
嗜蒂谷尘旱
然后,您可以通过以下方式使用这些方法:
更新 哦......正如Eric提到的,你应该找到另一个中位数的实现。你提供的那个不仅修改原始数组,但是,如果我正确读取它,也将返回一个整数而不是预期的小数。
誓猎贰
的扩展方法的代码: 计算c#的中位数
爆刺疤灯
穗揣
transform将采用一个集合项并将其转换为十进制(averagable and comparative) 我不会在这里详细介绍Median方法的实现,但它并不复杂。 编辑:我看到你添加了输出小数平均值的进一步要求。 PS:参数检查是为了满足要求。
抚驰
有:
膏焦凑