F#的快排
F# 的快排實現起來很簡單,因為集合類List里面的方法幫用戶實現了大部分的代碼。
下面就是就是代碼:
let rec quickSort (list : int list) =match list with| [] -> []| [single] -> [single]| head :: tail ->let leftList = tail|> List.choose(fun item -> if item <= head then Some(item) else None)let rightList = tail|> List.choose(fun item -> if item > head then Some(item) else None)quickSort(leftList) @ [head] @ quickSort(rightList)代碼里面使用了List.choose這個方法,你也可以使用List.filter方法。如果你不熟悉他們,參考F#鏈表——List各個函數解釋。
當然,你也可以使用Array,Seq作為數據源,因為這些都可以通過各自的toList 函數轉為List。如:[|1;2;3|] |> Array.toList
如果你不想使用內置的方法,可以參考一下:F# 中的異步快排?。
?
轉載于:https://www.cnblogs.com/FsharpZack/archive/2012/11/21/2780802.html
總結
- 上一篇: UVa 590 Always on th
- 下一篇: 关于 【通过代理访问】 的研究,【突破