小编Nee*_*rav的帖子

F#中的Quicksort - 语法问题

我有一个简单的f#快速排序功能,定义如下:

let rec qsort(xs:List<int>) =

let smaller = xs |> List.filter(fun e -> e < xs.Head)
let larger = xs |> List.filter(fun e -> e > xs.Head)
match xs with
| [] -> []
| _ -> qsort(smaller)@[xs.Head]@qsort(larger)
Run Code Online (Sandbox Code Playgroud)

在f#中是否有一种方法可以像Haskell一样编写它:

qsort       :: [Int] -> [Int]
qsort []     = []
qsort (x:xs) =
qsort smaller ++ [x] ++ qsort larger
where
  smaller = [a | a <- xs, a <= x]
  larger  = [b | b <- xs, b >= x]
Run Code Online (Sandbox Code Playgroud)

我知道f#算法缺少<=和> …

f# quicksort

6
推荐指数
4
解决办法
3769
查看次数

标签 统计

f# ×1

quicksort ×1