IPA – Catherine Faron Zucke et Anne Marie Deryr
suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir que des objets premier élément : liste.get(0) dernier élément : liste.get(liste.size()-1) i ième élément : liste.get(i-1) IPA – Catherine Faron Zucker 2
ajout d'un élt: liste.add(new Integer(3)); modif d'un élt: liste.set(i,new Integer(4)); suppression d'un élt: liste.remove(i); mêmes algos que sur les tableaux avec taille variable IPA – Catherine Faron Zucker 3
Ordonnancements particuliers des éléments d'une collection - implémentation à partir dun tableau ou d'une liste Pile : LIFO Last In First Out empiler/dépiler des éléments Peut être implémentée par un tableau ou une liste File : FIFO First In Fist Out enfiler /défiler des éléments implémentation par liste plus simple IPA – Catherine Faron Zucker 4
Soit la Pile contenant les valeurs : 1, 2, 5 Dessinez moi une Pile Ajoutons lélément 12 Dépilons un élément Soit la File contenant les valeurs : 1, 2, 5 Dessinez moi une File Ajoutons lélémént 12 Sortons un élément de la file
Algorithmes d'évaluation d'expressions mathématiques Algorithmes pour mémoriser des données en attente de traitement. IPA – Catherine Faron Zucker 6
public class Pile{ private Object[] table; private int hauteur; public void empiler(Object o) {table[hauteur]=o; hauteur++;} public Object depiler() {hauteur--; return table[hauteur];} public Object sommet(){} public boolean vide(){} public boolean pleine(){} } IPA – Catherine Faron Zucker 7
public class File{ private ArrayList liste; private int longueur; public void enfiler(Object o) {liste.add(o); longueur++;} public Object defiler() {longueur--; return liste.remove(0);} public Object tete(){} public Object queue(){} public boolean vide(){} } IPA – Catherine Faron Zucker 8
Stratégie de résolution d'un problème Approche incrémentale itérer jusqu'à obtention du résultat souhaité Approche récursive diviser pour régner: diviser en sous-problèmes régner sur les sous-problèmes combiner les solutions des sous-problèmes IPA – Catherine Faron Zucker 9
diviser: pgcd(a,b) = pgcd(b, a mod b) semblable au problème initial de taille moindre régner: pgcd(a,0) = a combiner: pgcd(a,b)= pgcd(b,a mod b)=... IPA – Catherine Faron Zucker 10
Si b=0 Alors retourner a //terminaison Sinon retourner pgcd(a, a mod b) finSi IPA – Catherine Faron Zucker 11
n <- a; m <- b; TantQue m != 0 Faire r <- n mod m n <- m m <- r FinTantQue retourner n IPA – Catherine Faron Zucker 12
Relation de récurence fac(n) = n * fac(n-1), n>0 fac(0) = 1 Algorithme Si n = 0 Alors retourner 1 Sinon retourner n * fac(n-1) FinSi IPA – Catherine Faron Zucker 13
Complexité opération élémentaire : * nbre de fois où elle est effectuée fonction de n: M(n) relation de récurence: M(n) = 1 + M(n-1) pour n>0 et M(0) = 0 en développant, on a M(n) = M(n-i) + i pour tout i pour i=n, on obtient M(n) = M(O) + n = n cf. module Maths discrètes IPA – Catherine Faron Zucker 14
Ajout dun élément en position i Suppresssion dun élément en position i Recherche dun élément de valeur z Calcul de la somme des éléments IPA – Catherine Faron Zucker 15
Maps et Sets listes chaînées : cf. td simplement, doublement arbres arbres binaires arbres binaires de recherche graphes IPA – Catherine Faron Zucker 16