挑选@Brian和@BrokenGlass离开的地方......
let inline median input =
let sorted = input |> Seq.toArray |> Array.sort
let m1,m2 =
let len = sorted.Length-1 |> float
len/2. |> floor |> int, len/2. |> ceil |> int
(sorted.[m1] + sorted.[m2] |> float)/2.
//by marking the function inline, we gain some extra flexibility with static member constraints
//val inline median :
// seq< ^a> -> float
// when ^a : comparison and ^a : (static member ( + ) : ^a * ^a -> ^b) and
// ^b : (static member op_Explicit : ^b -> float)
Run Code Online (Sandbox Code Playgroud)
(有点让我渴望数字类型之间的隐式转换)
这是一个描述平均O(n)算法和C#实现的链接.
归档时间: |
|
查看次数: |
1663 次 |
最近记录: |