我想知道如何编写快速排序的高效版本其中列表分为一个通道。Ocaml高效快速排序
我有这个代码片段,
let rec quicksort' = function
[] -> []
| x::xs -> let small = List.filter (fun y -> y < x) xs
and large = List.filter (fun y -> y > x) xs
in quicksort' small @ (x :: quicksort' large);;
但在这里,我通过列表会超过1次(调用2次快速排序为小型和大型)。
的想法是做在只需一个步骤没有去列表1倍以上。