是否有可能在Scala中执行this类型的事情?Scala中的惰性快速排序
回答
是的!
Scala支持“延迟vals”作为延迟计算值直到实际使用的方式。大多数Scala 2.8库能够处理懒惰定义的集合。
这不回答问题。 – 2014-10-22 14:09:25
def quicksort[A](xs: Stream[A])(implicit o: Ordering[A]): Stream[A] = {
import o._
if (xs.isEmpty) xs else {
val (smaller, bigger) = xs.tail.partition(_ < xs.head)
quicksort(smaller) #::: xs.head #:: quicksort(bigger)
}
}
可以在享有进行为好,尽管它势必要慢得多:
def quicksort[A](xs: List[A])(implicit o: Ordering[A]) = {
import o._
def qs(xs: SeqView[A, List[A]]): SeqView[A, Seq[_]] = if (xs.isEmpty) xs else {
val (smaller, bigger) = xs.tail.partition(_ < xs.head)
qs(smaller) ++ (xs.head +: qs(bigger))
}
qs(xs.view)
}
谢谢,但我希望看到列表视图实现。 – Mahesh 2010-04-22 16:08:23
@Mahesh视图实现结果比我想象的要困难得多。我会继续尝试看看是否有效。 – 2010-04-22 21:36:06
@Mahesh好的,解决了这个问题。我忘记了连接线上的'.head' ......傻了。 – 2010-04-22 22:31:39
- 1. 在懒惰地图集合中按日期快速排序
- 2. 的快速排序
- 3. 的快速排序
- 4. ML中的快速排序
- 5. 快速排序不排序
- 6. 快速排序的复杂性计算
- 7. 快速排序的复杂性
- 8. haskell快速排序的复杂性?
- 9. 快速排序(JAVA)
- 10. 快速排序比慢的std ::排序
- 11. 快速排序的Python排序麻烦
- 12. 对它的排序 - 快速排序
- 13. 并行快速排序由单线程快速排序
- 14. 快速排序的解释
- 15. VBA中的LinkedList上的快速排序
- 16. 在快速排序程序中出错
- 17. JavaScript中的快速排序错误
- 18. C++中的快速排序很慢
- 19. 快速排序实现中的问题
- 20. Python中的快速排序代码
- 21. 用指针快速排序
- 22. 快速排序迭代
- 23. 快速排序导致stackoverflow
- 24. 随机快速排序C#
- 25. 快速排序决策树
- 26. 随机快速排序
- 27. 快速排序混淆
- 28. 快速搜索和排序
- 29. 快速排序python实现
- 30. 快速排序太慢,ArrayIndexOutOfBoundsError
恕我直言,一个问题应该是自包含的。有关更多细节的链接都可以,但在此引用两行haskell代码不会有太多工作。 – 2011-05-11 18:47:07