您的位置:首页 > 编程语言 > C#

C# 获得List<int>众数

2015-02-04 14:55 447 查看
此文问获得List<Int>的众数:

/// <summary>

/// 获得高程的众数

/// </summary>

/// <param name="elevationList">传入list<int>数据</param>

/// <returns></returns>

private int GetElevationMode(List<int> elevationList)

{

try

{

int count;

bool flag = false;

Dictionary<int, int> dictionary = new Dictionary<int, int>();

for (int i = 0; i < elevationList.Count; i++)

{

if (dictionary.TryGetValue(elevationList[i], out count))

{

flag = true;

dictionary[elevationList[i]]++;

}

else

dictionary.Add(elevationList[i], 1);

}

//如果没有众数,返回空

if (!flag)

return 0;

int max = 0;

int position = 0;

int[] modeArray = new int[elevationList.Count];//众数数组

//遍历hash表

foreach (KeyValuePair<int, int> myKey in dictionary)

{

if (myKey.Value > max)

{

max = myKey.Value;

position = 0;

modeArray[0] = myKey.Key;

}

else if (myKey.Value == max)

modeArray[++position] = myKey.Key;

}

Array.Resize(ref modeArray, position + 1);

int mode = 0;

//如果众数不唯一,求平均数

if (modeArray.Length > 1)

{

for (int i = 0; i < modeArray.Length; i++)

{

mode += modeArray[i];

}

double elevationMode = mode / modeArray.Length;

}

//如果众数唯一,返回众数

else

{

mode = modeArray[0];

}

return mode;

}

catch (Exception ex)

{

Console.WriteLine(ex.Message);

return 0;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: