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 Smalltalk. 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:
quicksort: aCollection
aCollection isEmpty ifTrue: [ ^ #() ].
| pivot greater lesser |
pivot := aCollection first.
greater := aCollection allButFirst
select: [ :each | each > pivot ].
lesser := aCollection allButFirst
reject: [ :each | each > pivot ].
^ (self quicksort: greater),
{ pivot },
(self quicksort: lesser)
Y listo!!
.jpeg)
No hay comentarios.:
Publicar un comentario