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 Elm, Erlang, Rust, haskell y lisp
Ahora le toca a Elixir. 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:
defmodule QuickSort do
def sort([]), do: []
def sort([pivot | rest]) do
smaller =
Enum.filter(rest, &(&1 <= pivot))
greater =
Enum.filter(rest, &(&1 > pivot))
sort(smaller) ++ [pivot] ++ sort(greater)
end
end
Y listo!!

No hay comentarios.:
Publicar un comentario