思路
我的想法是先把数组变得有序,按照从小到大的顺序排列,得到有序的数组后再去对数组进行内部数据进行次数分析
通过相邻两数据的对比可以知道哪个数的频率最高,如果出现两个(或三或四等等)数的频率一样高,那我这种方法只会取最前面的一组数据,比如{1,2,2,3,3,5,5,9},取到的数据是2.但因为我得到的数据是有六位的浮点数float类型,比如1.78569这种类型的。
private float[] allHeightData=new float[100]; //zy:创建一个数组,用于存放一定量的身高数据
/// <summary>
/// zy:将数组里面出现次数最频繁的值取出来
/// </summary>
/// <param name="f"></param>
void MaxCountHeightData(float[] f,out float height)
{
//冒泡一遍,使数组从小到大排序
for (int j = 0; j < f.Length - 1; j++)
{
for (int i = 0; i < f.Length - 1 - j; i++)
{
if (f[i] > f[i + 1])
{
float temp = f[i];
f[i] = f[i+1];
f[i+1] = temp;
}
}
}
//排序完成,数组已经按由小到大顺序排列
//foreach (int number in f)
//{
// Debug.Log(number);
//}
//选择频繁数,不考虑频繁数频率相同的情况
int count = 1, max = 1; //当前次数和最大次数
float num = f[0]; //数组中最大的值
for (int i=1; i < f.Length; ++i)
{
if (f[i] == f[i - 1])
count++;
else
count = 1;
if (max < count)
{
max = count;
num = f[i];
}
}
print(num + ":" + max);
height = num;
}
传递进去的数组我取了小数后两位
allHeightData[count] = float.Parse(userData.ToString("#0.00")); ; //zy
这种方法可以把第一组频率最高的数据抓取出来