Vous êtes sur la page 1sur 3

Énoncé disponible sur http://www.ulb.ac.

be/di/info-f-102

INFO-F-102 – Architecture 1
Projet 2 : QuickSort avec données satellites

Année académique 2008-2009

1 Introduction
Vous avez vu, dans le cadre de votre cours d’Algorithmique 1, le tri rapide plus communément
appelé Quicksort. Toutefois, les informations que vous triez dans la version vue au cours étaient
des entiers. Il arrive dans certains cas, que vous deviez trier des vecteurs dont les éléments ne
sont pas simplement des entiers, mais des éléments composés de plusieurs champs. Par exemple,
ceux-ci peuvent être composés d’un champ contenant l’information et d’un champ clé permettant
d’ordonner cette information parmi les autres éléments. Vous retrouvez ci-dessous (voir Figure 1)
un exemple de la structure d’un élément et de la manière dont vous triez ce type de vecteur.

élément stocké dans le vecteur

clé d'ordonnancement information

Avant le tri:

6 5123 4 3267 7 1245 3 4320 9 7800

Après le tri:

3 4320 4 3267 6 5123 7 1245 9 7800

Figure 1 – exemple d’éléments composant le vecteur, et le vecteur avant et après le tri

La clé d’ordonnancement peut, elle-même, être composée de deux informations. Par exemple,
si nous voulons trier des informations représentées en 2 dimensions, nous avons alors une clé
composée des coordonnées x et y (voir Figure 2). Ce genre de cas peut arriver dans le traitement
de données issues de certaines missions d’exploration de terrains. Une méthode simple pour trier
ces données, c’est de le faire dans l’ordre lexicographique, c’est à dire d’abord sur les x, et si les
valeurs des coordonnées en x sont identiques, il faut les trier sur les y. Si ces coordonnées sont des
entiers sur 32 bits, et l’information est également sur 32 bits, alors nous avons une taille de 96 bits
par élément du vecteur à trier. Nous pouvons considérer x comme la partie haute et y comme la
partie basse d’une seule clé de 64 bits.
Malgré l’apparente complexité du tri, il suffit de comparer les clés entre elles comme dans un
quicksort classique, mais au moment de l’échange des données, il faut faire un échange de l’entièreté
de l’élément par un autre (et donc pas uniquement des clés !).

1
Énoncé disponible sur http://www.ulb.ac.be/di/info-f-102

élément stocké dans le vecteur

x y information

clé d'ordonnancement

Figure 2 – exemple de composition d’élément avec des composés de clés

2 Structure manipulée
La structure manipulée par le programme est assez simple, nous avons un vecteur d’entiers sur
32 bits. Le paramètre fourni en entrée, en plus du vecteur d’éléments, est le nombre d’éléments n.
Chaque élément débute en k × 3 pour k allant de 0 à n − 1. Nous avons donc la composante x en
k × 3, y en (k × 3) + 1 et l’information en (k × 3) + 2 (voir Figure 3).

n=3

vecteur = 3 7 345 3 5 1070 6 2 2080

x y data

Figure 3 – exemple de structure à manipuler

3 Programme à fournir
Nous vous demandons pour ce projet de faire l’implantation d’une procédure en assembleur
d’un quicksort modifié capable de trier un vecteur d’éléments d’une taille de 96 bits comme décrits
plus haut. Nous vous fournirons un fichier de données à trier. Vous pouvez largement vous inspirer
des versions C++ que vous avez vues au cours d’Algorithmique 1.
Un jeu de données sera fourni prochainement sur la page web du tp pour tester votre implan-
tation. Ce jeu de données se présentera sous la forme d’un vecteur d’entiers sur 32 bits, qui se
découpera de la même manière que celle décrite à la section précédente. Nous vous fournirons un
fichier io.cpp vous permettant d’afficher le résultat du tri. Nous insistons également sur le fait
que votre solution doit être lisible, concise et bien structurée, c’est à dire que nous nous attendons
à une bonne découpe en procédures et à des commentaires pertinents.

2
Énoncé disponible sur http://www.ulb.ac.be/di/info-f-102

Consignes pour la remise du projet


À respecter scrupuleusement !

1. Votre projet doit comporter votre nom et votre numéro de groupe.


2. Votre projet doit être dactylographié. Les projets écrits à la main ne seront pas cor-
rigés.
3. Vous devez envoyer une copie électronique à infof102@lit.ulb.ac.be
– Le sujet de l’email doit être « Arch1 - proj2 »
– L’email doit contenir votre nom/prénom, ainsi que le fichier proj2.asm
4. Votre code doit être commenté.
5. Vous devez respecter les instructions assembleurs vues aux travaux pratiques.
6. Vous devez respecter les modalités suivantes :
– Date limite de remise : le lundi 27 avril 2009
– Lieu : au Secrétariat « étudiants » du Département d’Informatique, local
2N8.104
– Heure : Avant 16h
Le secrétariat ferme à 16h. Après 16h, les projets sont considérés comme en retard,
et vous perdez 1 point sur votre note finale (plus un point par jour ouvrable de retard).
Les projets en retard doivent être déposés dans la caisse prévue à cette effet aux heures
d’ouverture des jours suivants du secrétariat.