Not every Saturday is a pleasant sunshine blue sky. Today is one of these Saturdays.
The real driving power for F# is business requirements from the community and the success of F# depends on the success of community. I was hoping these materials can inspires discussions around F# and eventually increase the adoption of F#. Our team, like me, wants to serve the community better, so please tell me, your code has bug, your code can be more concise, or your code is shit.
So please, together, we can make it.
open System
let rec merge list0 list1 =
match list0, list1 with
| [], [] -> []
| [], list
| list, [] -> list
| h0::t0, h1::t1 ->
if h0 < h1 then
[h0] @ merge t0 list1
else
[h1] @ merge list0 t1
let rec mergeSort list =
match list with
| [] -> []
| [a] -> [a]
| [a; b] -> [ min a b; max a b ]
| _ ->
let firstHalf =
list
| > Seq.take (list.Length / 2)
| > Seq.toList
let secondHalf =
list
| > Seq.skip (list.Length / 2)
| > Seq.toList
let sortedFirstHalf = mergeSort firstHalf
let sortedSecondHalf = mergeSort secondHalf
merge sortedFirstHalf sortedSecondHalf
mergeSort [1;3;9;2;4;7;6;5]
No comments:
Post a Comment