我正在比较一些不同的方法来组织边界"在dijkstra的单源最短路径算法中。我正在使用的一个实现是使用q:scala.collection.mutable.Queue。
基本上,每次我向q添加节点时,我都会对q进行排序。正如预期的那样,这种方法比使用scala.collection.mutable.PriorityQueue和我实现的MinHeap要花费更长的时间。 我的问题是,当我调用q.sorted时,Queue会使用什么样的类型?我特别感兴趣的是排序实现的时间复杂度。
我尝试过查看API(http://www.scala-lang.org/api/2.10.2/index.html#scala.collection.mutable.Queue)和代码(https://github.com/scala/scala/blob/v2.10.2/src/library/scala/collection/mutable/Queue.scala#L1),但我们无法对此进行跟踪。
提前感谢您的帮助。
答案 0 :(得分:1)
Queue
继承了SeqLike的sorted
方法。你可以看到,它创建了相同元素的新数组,通过java.util.Arrays.sort
对数组进行排序,然后创建原始类型的新结构。