Un algoritmo que me gusta mucho es el quicksort, porque es un algoritmo por demás claro. Ya he escrito lo fácil que es implementarlo en Erlang, Rust, haskell y lisp
Ahora le toca a Elm. Básicamente, el algoritmo toma un pivote y agrupa los menores que el pivote al principio y los mayores al final y aplica quicksort a estos dos grupos. Y si la lista es vacía o tiene un elemento, ya está ordenada.
Vamos al código:
module QuickSort exposing (quicksort)
quicksort : List comparable -> List comparable
quicksort list =
case list of
[] -> []
pivot :: rest ->
let
smaller =
List.filter (\x -> x <= pivot) rest
greater =
List.filter (\x -> x > pivot) rest
in
quicksort smaller ++ [ pivot ] ++ quicksort greater
Y listo!!

No hay comentarios.:
Publicar un comentario