"Algoritmo não muito usado"

  1. Selecionar o menor elemento da listas
  2. Colocar-lo na cabeça da lista
  3. Retirar da lista a ocorrência desse elemento
  4. Continuar a ordenar pelo mesmo método
-- Passo 1 com a função minimum / Passo 2 com a função minSort
minSort :: (Ord a) => [a] -> [a]
minSort [] = []
minSort l = let m = minimum l
            in m : minSort (apagar m l)

-- Passo 3 com a funão apagar
apagar :: (Eq a) => a -> [a] -> [a]
apagar x [] = []
apagar x (y:ys) | x==y = ys
                | otherwise = y : apagar x ys

minimum

maximum