相关疑难解决方法(0)

在F#/ OCaML中实现类似quicksort的函数的尾递归版本

是否可以实现快速排序算法的尾递归版本(通过延续模式)?如果是的话,如何实现呢?

正常(未优化)版本:

let rec quicksort list =
 match list with
 | [] -> []
 | element::[] -> [element]
 | pivot::rest -> let ``elements smaller than pivot``, ``elements larger or equal to pivot``= 
                    rest |> List.partition(fun element -> element < pivot)
                  quicksort ``elements smaller than pivot`` @ [pivot] @ quicksort ``elements larger or equal to pivot``
Run Code Online (Sandbox Code Playgroud)

f# ocaml functional-programming tail-recursion

5
推荐指数
1
解决办法
2695
查看次数