【发布时间】:2011-11-22 19:31:17
【问题描述】:
跟进this question 我想知道为什么 maxBy of Traversable[T] 返回单个值T 而不是T 的序列(列表或类似)。这看起来是一个很常见的案例。例如(来自上一个问题):
查看学生的成绩列表
List(Student("Mike", "A"), Student("Pete", "B"), Student("Paul", A))"
我想得到
列表(学生(“迈克”,“A”),学生(“保罗”,A))
有人知道maxBy 的任何标准实现吗,它返回一系列找到的项目?
【问题讨论】:
-
那不是(降序)排序吗?
-
@delnan 不,我需要 O(N) 算法。
-
请澄清。我读到您当前的问题,要求提供一种方法,从大小为 m 的集合中提供 n 个最大的项目。这在 O(n) 中显然是不可能的,而且通常很像排序。
-
所以你真的想让所有的项目都等于最大的项目吗?那么就明确的说出来吧!无论如何,我认为在 O(N) 最坏情况下(这通常是所有人都关心的)是不可能的,因为最大项目的数量不是恒定的。
-
@delnan 确定是的。请参阅我的答案,它只遍历列表一次。 (当然假设比较函数是O(1)时间复杂度)
标签: scala collections