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 scala, erlang, rust, haskell y lisp.
Ahora le toca a Elixir. Básicamente el algoritmo toma un pivot y agrupa los menores del pivot al principio y los mayores al final y aplica quicksort a estos 2 grupos. Y si la lista es vacia o tiene un elemento, ya esta ordenada.
Vamos al código:
defmodule QuickSort do
def sort([]), do: []
def sort([pivot | tail]) do
lower = Enum.filter(tail, &(&1 <= pivot))
higher = Enum.filter(tail, &(&1 > pivot))
sort(lower) ++ [pivot] ++ sort(higher)
end
end