Translate

martes, 4 de agosto de 2026

Quickysort en Smalltalk


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 ElmErlangRusthaskell 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!!

No hay comentarios.:

Publicar un comentario