找到O(1)表示法中的数字列表的平均值 - 恒定时间

时间:2012-11-14 19:38:51

标签: c++ algorithm visual-c++ numbers average

这就是事情,我有一个任务要创建一个带有一些数字的数组,之后数组可以接受任何位置内的任何其他相同类型的数字。当我得到最后一个数组(添加了数字)时,我需要找到内部数字的平均值,并且持续时间为O(1)。我怎么做?! 这就是我的例子

元素:5 12 7 9 31 平均值:12.8

1 个答案:

答案 0 :(得分:16)

如果这是一个数组类,您可以跟踪添加和更新的所有数字的总和。然后,当所有更新完成时,只需将总和除以元素数来得到平均值,只需计算平均值为O(1),因为总和是预计算的。

如果这是一个简单传递的原始内存数组,那么计算平均值将需要求和所有数字,即O(N),除非有人正在玩关于操作的语义游戏。