【发布时间】:2013-05-14 12:39:10
【问题描述】:
我今年参加了 AP 计算机科学考试,其中一个问题(对我来说是 16 号)似乎实际上没有完全正确的答案(尽管很明显 AP 的人打算将哪个答案作为正确答案) .
问题如下:
以下哪项不能在按降序排序的数组上比在未排序的数组上更有效地实现?
A.) 搜索元素
B.) 找到中位数
C.) 求算术平均值
D.) 升序输出
E.) 找到最大值
虽然有些人会天真地给出答案 C,但我很确定这个答案并不完全正确。
举个例子: 我有一个包含 4503599627370496 个双精度浮点值的数组,其中一个等于 9007199254740993,其余的都是 0.999999。根据 where 的确切值,寻找均值的简单方法(遍历元素,将它们相加,将总数除以计数)将不会产生正确的值,除非 (1) 较大稍后将元素添加到总和中(即数组已排序),(2)我们使用更高精度的值来跟踪总和(即我们使用更多资源),或者(3)我们使用其他方法也需要更多资源。
如果它需要更多的资源,那么根据定义,它的效率就会降低。
另外,虽然这有点回避这一点,但如果你不将自己限制在计算东西的标准模型(例如,如果我们允许量子计算机),它们中的任何一个在未排序的情况下都会变得同样有效数组作为排序数组。
试题真的有缺陷吗,还是我在这里漏掉了什么?
【问题讨论】:
标签: arrays performance mean