是否可以实现快速排序算法的尾递归版本(通过延续模式)?如果是的话,如何实现呢?
正常(未优化)版本:
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)