详细是这样的
有10个数值,然后求出这些数值的平均值。
但难点就是要剔除超过平均值正负10%的数值(也就是假如有1个数值是超过余下9个数平均值的正负10%,就删除那个1数值,再剩下的9个数值求平均值)
最少要求出5个数值的平均值(这5个数都是没有超过平均值正负10%的)
现在的问题是:
1、先求10组数平均值再找出哪个超过10%数值的话,那超过正负10%的数值必然会拉低或升高了平均数值,造成无法正确找出超过10%数值。
2、超过正负10%的数值可能不一定是只有1个,也有可能2个、3个...等等(只要不超过5个的话)
我目前想到的
第一步是先用冒泡算法,求出最小到最大数值的排序。
第二步直接求中间值第5和第6位数值的平均值,再看有没有超过10%
第三步就是4、5、6平均值,再看有没超过10%
第四步就是5、6、7平均值,再看有没超过10%
第五步就是4、5、6、7平均值,再看有没超过10%
然后如此类推
1、但我觉得这样的算法实在太复杂了,估计也占相当的资源,不知大家有没有更好的算法?
2、这个算法如何用C程序写出来呢?(实际上数值可能不止10个(这里我只是举个例),可能是100个、1000个等等,也就是数组不定,但是要求出这数组一半数值的平均值是没超过正负10%)
|