c# 多个数取值问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 10:14:44
现在不定几个数 数的个数可能是4 6 8(确定是偶数)
要求写一个方法来取值
例如八个数如下:n1 n2 n3 n4 n5 n6 n7 n8
要取这八个数中值相同最多个数的值(如:1 1 1 1 2 3 2 5 就取 1)
如果每个数的值相等就随便取这个数的值。如果四个相同(如:1 1 1 1 2 2 2 2 就取 1和2 的平均值 1.5)如果八个值都不相同就取八个数的平均值

给你写个函数: 调用的方法GetMaxCountNumAvg(1, 1, 1, 1, 2, 3, 2, 5)

private double GetMaxCountNumAvg(params double[] arr)
{
List<int> numcount = new List<int>();

//取得arr中各不相同的数,个数存入一个字典中
Dictionary<double, int> kv = new Dictionary<double, int>();

foreach (double d in arr)
{
if (!kv.ContainsKey(d))
{
kv.Add(d, 1);
}
else
{
kv[d]++;
}
}

//取得各数的个数
foreach (int v in kv.Values)
{
numcount.Add(v);
}

//得到个数最多的数的个数
numcount.Sort();
int[] tmp = numcount.ToArray();
int maxcount = tmp[tmp.Length - 1];<