Scala';s树集'min'运行性能
在探索Scala的标准库时,我发现,Scala';s树集'min'运行性能,scala,scala-collections,Scala,Scala Collections,在探索Scala的标准库时,我发现,TreeSet根本不会覆盖min操作,所以这个操作是从TraversableOncetrait派生的,它只使用reduceLeft。因此,我假设它只是扫描整个集合,使其成为一个线性复杂度操作,即使TreeSet的本质是它的head将是最小元素。但是声称它的复杂性是O(logn),这是有意义的,因为它只需要遍历树到最左边的元素 所以问题是:我假设head总是返回最小元素(当然是根据顺序)是正确的吗?min操作实际上是一个线性操作,从而使官方的Scala文档不正确
TreeSet
根本不会覆盖min
操作,所以这个操作是从TraversableOnce
trait派生的,它只使用reduceLeft
。因此,我假设它只是扫描整个集合,使其成为一个线性复杂度操作,即使TreeSet
的本质是它的head
将是最小元素。但是声称它的复杂性是O(logn),这是有意义的,因为它只需要遍历树到最左边的元素
所以问题是:我假设
head
总是返回最小元素(当然是根据顺序)是正确的吗?min
操作实际上是一个线性操作,从而使官方的Scala文档不正确吗?我想你是对的。min
方法似乎是这样实现的,因为它可以被赋予不同的顺序:它的完整签名是defmin[B>:a](隐式cmp:ordering[B]):a
@dkim-hmmm是有意义的。奇怪的是,TreeSet
没有提供任何替代min
的功能,人们会认为这是它的主要功能之一。