【发布时间】:2011-02-27 01:35:36
【问题描述】:
我最近回答了question 并尝试在 Scala 中编写快速排序函数,我曾在某处看到类似下面的代码。
def qsort(l: List[Int]): List[Int] = {
l match {
case Nil => Nil
case pivot::tail => qsort(tail.filter(_ < pivot)) ::: pivot :: qsort(tail.filter(_ >= pivot))
}
}
我的回答收到了一些建设性的批评,指出 List 是一个糟糕的快速排序集合选择,其次,上述不是尾递归。
我尝试以尾递归的方式重写上面的内容,但运气不佳。是否可以编写尾递归快速排序?或者,如果没有,如何以功能风格完成?还可以做些什么来最大限度地提高实施效率?
【问题讨论】:
标签: scala