next up previous contents index
Next: Implémentation pour des listes Up: Tri par insertion Previous: Tri par insertion   Contents   Index

Implémentation pour des vecteurs

L'idée de cette implémentation est de considérer les éléments au début du vecteur comme triés, et les autres comme une source non triée d'éléments à insérer.

insertionvecteur.lisp

On remarque l'utilisation d'une clause with pour chacune des boucles, éliminant la nécessité de l'entourer d'un let. On remarque aussi la double condition de terminaison de la boucle intérieure, à la fois sur la comparaison des éléments et le fait d'arriver au début du tableau. Finalement, on remarque l'utilisation de la clause finally dans la boucle intérieure.

Comme le montre son utilisation, cette implémentation est stable :

* (defparameter *v* #(4 1 3 1  8 3 44 5 7 3 9 0 0 3 2 44 5 33))

*V*
* (insertionsort1 *v*)

NIL
* *v*

#(0 0 1 1 2 3 3 3 3 4 5 5 7 8 9 33 44 44)
* (insertionsort1 *v* :test #'(lambda (x y) (and (oddp x) (evenp y))))

NIL
* *v*

#(1 1 3 3 3 3 5 5 7 9 33 0 0 2 4 8 44 44)
* (insertionsort1 *v* :test #'>)

NIL
* *v*

#(44 44 33 9 8 7 5 5 4 3 3 3 3 2 1 1 0 0)
* (insertionsort1 *v* :test #'(lambda (x y) (and (oddp x) (evenp y))))

NIL
* *v*

#(33 9 7 5 5 3 3 3 3 1 1 44 44 8 4 2 0 0)
*


next up previous contents index
Next: Implémentation pour des listes Up: Tri par insertion Previous: Tri par insertion   Contents   Index
Robert STRANDH
2001-09-28