the Removers

Le tri rapide

vendredi 1er mai 1998, par Seb

Le Quick Sort (ou tri rapide pour les anglophobes) est une des meilleures solutions pour trier des données.

Nous vous en proposons une traduction en assembleur 68020 pour trier un tableau de mots. Mais avant de commenter le source (qui l’est beaucoup plus qu’un de mes sources habituels !), faisons un peu de théorie !

Pour cela, commençons par un petit exemple. Soit le tableau : [26 18 4 9 37 119 63 220 47 74]. Le nombre 37 a un role très particulier : tous les objets avant 37 sont plus petits que 37 et tous ceux après 37 sont plus grands que 37. On donne le nom de pivot à un tel objet. Supposons maintenant que nous sachions trouver un pivot ap dans un tableau a=(a0,...,an) (n entiers positifs), alors récursivement, nous pourrions trier les sous tableaux (a0,...,ap-1) et (ap+1,...,an) : voilà ce que l'on appelle le quick sort !
Il nous faut donc savoir créer un pivot dans un tableau a=(ag,...,ad) :

où la fonction echange se charge d’échanger deux éléments d’un tableau. La traduction du tri rapide est alors immédiate : Toujours en CAML :

Zip - 1 ko
Quicksort en assembleur 68020
Un exemple d’implémentation de l’algorithme du tri rapide en assembleur 68020.

En assembleur 68020 !

P.-S.

Niveau complexité, on peut prouver que la complexité en moyenne du tri rapide est en O(n*log(n)), j’ai le détail dans mes cours si cela vous intéresse !

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0