Une classe qui gère un tableau trié d'entiers
Il s'agit de définir une classe représentant un tableau trié d'entiers. On verra dans cet exercice que les tableaux présentent l'inconvénient d'être de taille fixé ce qui oblige l'utilisateur du tableau à prévoir en particulier le cas où le tableau deviendrait trop plein. Un exercice ultérieur est consacré au même sujet mais en utilisant un ArrayList plutôt qu'un tableau, ce qui est plus confortable.
La classe, appelée TableauTrie, aura un attribut privé qui sera un tableau d'entiers.
Au moment de la construction d'une instance de la classe, le tableau aura une capacité qui aura une valeur par défaut donnée par le programmeur et pourra aussi être indiquée par le constructeur. Le tableau initial ne contiendra aucun élément.
Les méthodes suivantes seront prévues :
- void inserer(int entier) : insére un entier dans le tableau en respectant un ordre croissant sur les entiers. On conseille d'utiliser ici l'algorithme suivant (qui suit le principe du tri par insertion) : notons n l'entier à insérer et k le plus grand indice du tableau ; on compare n à l'entier p qui se trouve à l'indice k ; si n est plus grand que p, on met n à l'indice k + 1 dans le tableau ; sinon, on décale p d'un indice vers la droite en l'écrivant à l'indice k + 1 (puisque n viendra avant p) et on compare n avec l'entier q qui se trouve à l'indice k - 1 du tableau ; si n est plus grand que q, on écrit n à l'indice k qui est sa bonne place définitive, sinon on décale q d'un indice vers la droite en l'écrivant à l'indice k ; et ainsi de suite en remontant vers la gauche du tableau jusqu'à trouver la bonne place pour n ou bien arriver à la gauche du tableau ; il reste à écrire cela avec une boucle portant sur un indice décroissant à partir de k.
- void supprimer(int entier) : retire un entier donné, si un tel entier est dans le tableau. Si l'entier figure plusieurs fois, une seule occurrence est retirée.
- public String toString() : retourne une chaîne de caractères décrivant le tableau, en redéfinissant la méthode correspondante de la classe Object.
- void afficher() : affiche à l'écran la liste triée des entiers en utilisant la méthode toString.
Vous pouvez bien sûr ajouter des fonctionnalités.
Lorsque le tableau devient trop petit, il faut l'agrandir en définissant un tableau plus grand et en recopiant les entiers un à un. La différence entre la capacité de l'ancien tableau et celle du nouveau sera fournie par la donnée entièreincrement dont la valeur pourra être indiquée par le constructeur.
Lorsque le nombre de données aura diminué de telle sorte que la capacité inemployée soit au moins égale au double de l'incrément, on diminuera le tableau.
On prévoiera deux constructeurs : un sans paramètre, et un qui prend en paramètres la capacité initiale du tableau et la valeur de l'incrément.
On récupérera le fichier EssaiTableauTrie.java qui contient une méthode main qui permet de tester la classe TableauTrie que vous aurez écrite. Lors de l'exécution de ce programme de test, on pourra dans une boucle entrer :
- la lettre i suivie de données à insérer
- la lettre s suivie de données à supprimer
- la lettre a pour afficher le contenu du tableau
- la lettre q pour quitter
Corrigé pour la classe TableauTrie