是否有可能在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. Scala與java.util.Arrays.sort的快速排序
- 2. 在懶惰地圖集合中按日期快速排序
- 3. 的快速排序
- 4. 的快速排序
- 5. LISP中的快速排序
- 6. DrScheme中的快速排序
- 7. python中的快速排序
- 8. ML中的快速排序
- 9. 快速排序不排序
- 10. 快速排序的緩存性能
- 11. haskell快速排序的複雜性?
- 12. 快速排序的複雜性
- 13. 快速排序的複雜性計算
- 14. 以第一個元素爲快速排序的快速排序
- 15. 快速排序(JAVA)
- 16. perl快速排序
- 17. 快速排序算法穩定性
- 18. Scala - 在快速排序中刪除while循環
- 19. 對它的排序 - 快速排序
- 20. 快速排序的Python排序麻煩
- 21. 快速排序比慢的std ::排序
- 22. 運行合併排序和快速排序的線性時間
- 23. 並行快速排序由單線程快速排序
- 24. 快速排序的實施
- 25. 快速排序的解釋
- 26. 快速排序升序
- 27. VBA中的LinkedList上的快速排序
- 28. 快速排序,以結構排序
- 29. 快速排序每次不排序
- 30. 警告而排序與快速排序
恕我直言,一個問題應該是自包含的。有關更多細節的鏈接都可以,但在此引用兩行haskell代碼不會有太多工作。 – 2011-05-11 18:47:07