有没有一种方法可以在不使用数组的情况下计算所有数字的平均值/最小值/最大值?每秒最多需要计算10,000个数字。
是,
保留初始化为高值的最小变量,并在看到较低值时对其进行更新。
用最大变量执行相反的操作。
将所有数字相加,然后将总和除以总数即可得到平均值。
以下代码不进行边界检查(例如count> 0,total不会溢出),但是应该可以使您有所了解:
int minimum = // Initialize to large #, in C# would be int.MaxValue int maximum = // Initialize to most negative #, in C# would be int.MinValue int count = 0; int total = 0; void StatsForNewNumber(int number) { if (number < minimum) minimum = number; if (number > maximum) maximum = number; count++; total += number; } int Average() { return total / count; }