Algorithme
Liste triée en Java
 
Objectif : Effectuer un travail de familiarisation avec la structure de liste dynamique adressable triée correspondant à la notion de tableau dynamique trié. Ce genre de structure cumule les avantages d'un structure de liste linéaire (insertion, ajout,...) et d'un tableau autorisant les accès direct par un index.

La classe concernée se dénomme Vector, elle hérite de la classe abstraite AbstractList et implément l'interface List ( public class Vector extends AbstractList implements List )

Question n°1 initialiser et ecrire la liste
Question n°2 trier la liste par sélection
Question n°3 insérer un élément dans la liste triée
Des méthodes utiles sur les objets de classe Vector


Nous allons utiliser un Vector pour implanter une liste triée de noms, les éléments contenus dans la liste sont des chaînes de caractères (des noms)..

Question n°1:
Codez  la méthode "initialiser" qui permet de construire la liste suivante :
Liste = ( voiture, terrien, eau, pied, traineau, avion, source, terre, xylophone, mer, train, marteau ). 

Codez  la méthode "ecrire" qui permet d'afficher le contenu de la liste et qui produit l'affichage suivant :
 

voiture, terrien, eau, pied, traineau, avion, source, terre, xylophone, mer, train, marteau,
Taille de la liste chaînée = 12


squelette proposé pour chaque méthode :

static void initialiser ( Vector  L ) {....}
static void ecrire( Vector L ) {....}
 

Remarque importante :
Une entité de classe Vector est un objet. un paramètre Java de type objet  est une référence, donc nous n'avons pas le problème du passage par valeur du contenu d'un ojet. En pratique cela signifie que lorsque le paramètre est un objet il à la fois en entrée et en sortie. Ici le Vector L est modifié par toute action interne effectuée sur lui dans les méthodes "initialiser" et "ecrire".
 

Remonter 

Question n°2:
Ecrire une méthode permettant de trier la liste des noms par odre alphabétique croissant en utilisant l'algorithme de tri par sélection.

squelette proposé pour la méthode :

static void triSelect (Vector L ) {....}
 

Remonter 

Question n°3:

Ecrire une méthode permettant d'insérer un nouveau nom dans une liste déjà triée, selon l'algorithme proposé ci-dessous :

Spécifications de l’algorithme :
 
L : Liste de noms déjà triée,
Elt : le nom à insérer dans la liste L.
taille(L) : le nombre d'éléments de L

début
 si (la liste L est vide) ousinon ( dernierElement de la liste L £ Elt ) alors
    ajouter Elt en fin de liste L
 sinon
  pour i ¬ 0 jusquà taille(L)-1 faire
   si Elt £  Element de rang i de L alors
          insérer Elt à cette position ;
          sortir
   fsi
  fpour
 fsi
fin

squelette proposé pour la méthode :

static void inserElem (Vector L, String Elt ) {....}
 

Contenu proposé de la méthode main avec les différents appels :

Remonter 

Voici ci-dessous les méthodes principalement utiles à la manipulation d'une telle liste:

Classe Vector :
boolean add(Object elem) Ajoute l'élément "elem" à la fin du Vector et augmente sa taille de un.
void add(int index, Objectelem) Ajoute l'élément "elem" à la position spécifiée par index et  augmente la taille du Vector de un.
void clear( ) Efface tous les éléments présents dans le Vector et met sa taille à zéro.
Object firstElement( ) Renvoie le premier élément du Vector (l'élément de rang 0). Il faudra le transtyper selon le type d'élément du Vector.
Object get(int index) Renvoie l'élément de rang index du Vector. Il faudra le transtyper selon le type d'élément du Vector.
 int indexOf(Object elem) Cherche le rang de la première occurence de l'élément "elem" dans le Vector. Renvoie une valeur comprise entre 0 et size()-1 si "elem" est trouvé, revoie -1 sinon.
void insertElementAt(Object elem, intindex) Insère l'élément "elem" à la position spécifiée par index et  augmente la taille du Vector de un.
boolean isEmpty( ) Teste si le Vector n'a pas d'éléments (renvoie true); renvoie false s'il contient au moins un élément.
Object lastElement( ) Renvoi le dernier élément du Vector (l'élément de rang size()-1). Il faudra le transtyper selon le type d'élément du Vector.
Object remove(int index) Efface l'élément de rang index du Vector. La taille du Vector diminue de un.
 boolean remove(Object elem) Efface la première occurence de l'élément elem du Vector, la taille du Vector diminue alors de un et renvoie true. Si elem n'est pas trouvé la méthode renvoie false et le Vector n'est pas touché.
int size( ) Renvoie la taille du Vector (le nombres d'éléments contenus dans le Vector).

Remonter