Saludos os dejo este quicksort que hice, es una alternativa al famoso quicksort de haskell que muchos conocen

Código: Seleccionar todo

qs :: Ord a => [a] -> [a]
qs [] = []
qs xs = qs[q | q <- init xs,not (q >= last xs)]++[last xs]++qs[q | q <- init xs, not (q < last xs)]
Pastebin:
[Enlace externo eliminado para invitados]

Muestra:

Código: Seleccionar todo

"ghci>" :load "QuickSort.hs"
[1 of 1] Compiling Main             ( QuickSort.hs, interpreted )
Ok, modules loaded: Main.
"ghci>" qs [95,14,72,10,63,44,69,28]
[10,14,28,44,63,69,72,95]
"ghci>" qs "DFBEAC"
"ABCDEF"
"ghci>" 
el QuickSort es una tecnica bastante conocida para Ordenar numeros o caracteres de menor a mayor.
en los codigos que hay por internet suelen tomar el primer elemento de la lista como pivote, yo tomo en este codigo el ultimo elemento de la lista como pivote y hago una comparacion inversa con not en el predicado para asi hacer el quicksort mas alternativo o inverso ya que esa era mi intencion, que el codigo trabaje de manera inversa deacuerdo a los codes que se ven por hay que lo hacen tomando como pivote el primer elemento de la lista para despues hacer una comparacion no inversa, Despues uso init para ir deconstruyendo la lista y asi dar con el caso base de la funcion que es la lista vacia(fin de la recursion), en los otros codigos no inversos usan un ajuste de patrones para ir deconstruyendo la lista
espero les haya quedado clara la explicacion xD, un saludo a todos
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
Me agrade ver como avanzas en éste lenguaje, el algoritmo de maquiavelo se ve excelente.
Insisto con lo del tutorial de haskell pero ademas también me gustaría que hablaras del manejo de memoria, que tan rápido es, etc...
claro aunque en haskell no e llegado todavia a esa parte un saludo crack
Abolición para el torneo del toro de la vega. Death to the murderers of bulls.
Responder

Volver a “Fuentes”