Académique Documents
Professionnel Documents
Culture Documents
tableau
Pr. Najlaa ESSALHI
MPSI/PCSI
Plan du cours
• C’est quoi un tableau?
• Recherche d’une valeur dans un tableau
• Recherche séquentielle
• Recherche dichotomique
• Tri d’un tableau
• Tri par sélection
• Tri par insertion
• Tri à bulles
C’est quoi un tableau?
• En algorithmique, un tableau est une suite de valeurs stockées dans
des cases mémoire contiguës
• On représente graphiquement, par exemple, le tableau contenant la
suite de valeurs entières 3, 7, 42, 1, 4, 8, 12 de la manière suivante:
3 77 42 11 4 8 12
• Implémentation en python:
• Implémentation en python:
• Implémentation en python:
Ligne4: on utilise la boucle « while » pour parcourir le tableau tant qu’on n’a pas
encore atteint sa fin ( i<n ) et on n’a pas rencontré un élément dont la valeur est
égale à la valeur de x ( t[i]!=x)
Recherche d’une valeur dans un tableau/
Recherche séquentielle
• Principe: Parcourir le tableau et faire la comparaison de chaque
élément avec la valeur recherchée d’une manière séquentielle,
jusqu’à la trouver
• Implémentation en python:
• Implémentation en python:
• Implémentation en python:
…. t[m]
t[m+1:]
Recherche d’une valeur dans un tableau/
Recherche dichotomique
•Implémentation en python:
•Ligne11-12: sinon donc t[m]>x c à d
on doit recommencer la recherche
dans le sous tableau à gauche t[:m]
donc d=m-1
t[j]<t[m] t[j]>t[m]
…. t[m]
0 m-1 m m+1 n-1
t[:m]
•Ligne13: si on sort de la boucle
« while » sans rencontrer un m tel
que t[m]=x on renvoie, alors, la
valeur « None »
Plan du cours
• C’est quoi un tableau?
• Recherche d’une valeur dans un tableau
• Recherche séquentielle
• Recherche dichotomique
• Tri d’un tableau
• Tri par sélection
• Tri par insertion
• Tri à bulles
Tri d’un tableau
• Les algorithmes présentés sont valables pour n’importe quel type
d’éléments, pourvu qu’il soit muni d’un ordre total
• On suppose qu’on trie des tableaux, dans l’ordre croissant. On note N
le nombre d’éléments à trier.
Plan du cours
• C’est quoi un tableau?
• Recherche d’une valeur dans un tableau
• Recherche séquentielle
• Recherche dichotomique
• Tri d’un tableau
• Tri par sélection
• Tri par insertion
• Tri à bulles
Tri d’un tableau/ Tri par sélection
• Principe: Sur un tableau de n éléments, pour i=0,1,...n-2:
• Sélectionner l’indice du minimum de la partie du tableau comprise entre les indices « i» et
« n-1» inclus (le sous tableau t [i : n])
• Permuter le minimum trouvé avec l’élément de l’indice « i »
Tableau déjà
trié
…. t[i] t[i_min] ….
t[i:]
t[i:]
•Ligne4-7:stocker la valeur de
l’indice du minimum dans la
variable i_min
Tri d’un tableau/ Tri par sélection
• Implémentation en python:
•Ligne8: permuter t[i] et t[i_min]
…. t[i] … t[i_min] …
0 i i_min n-1
t[i:]
2 5 3 1 4
Tri d’un tableau/ Tri par insertion
2 3 5 1 4
Tri d’un tableau/ Tri par insertion
1 2 3 4 5
Tri d’un tableau/ Tri par insertion
• Implémentation en python:
•Ligne2: à chaque itération, et
pour chaque élément du tableau t,
i reçoit son indice et v sa valeur,
•Ligne3: à chaque itération i, on
utilise une variable j pour parcourir
le sous tableau t[:i] et donc j est
initialisé par l’indice de son dernier
élément i-1
Tableau déjà trié
…. v ….
0 i-1 i n-1
t[:i]
Tri d’un tableau/ Tri par insertion
• Implémentation en python:
•Ligne4:la boucle est interrompue
si on a terminé le parcours du sous
tableau t[:i] (j<0) ou on a
rencontré une valeur t[j]>=v
•Ligne5: pour chaque valeur t[j]>v
on fait un décalage à droite
Si t[j]>v v
…. … T[i] ….
t[:i]
•Ligne6: j=j-1 pour parcourir les
sous tableau t[:i] de droite à
gauche
Tri d’un tableau/ Tri par insertion
• Implémentation en python:
•Ligne7:à la sortie de la boucle
« while » j contient la valeur de
l’indice de la bonne position ou on
doit insérer v mais décrémenter
par 1 (ligne 6), d’où v est insérée à
la position j+1
… … t[i] ….
j j+1 i
t[:i+1]
• Exemple: considérons le tableau des entiers t=[5,2,3,1,4]
• n=5, i allant de 4 à 1
Tri d’un tableau/ Tri à bulles
Pour i=4:
- t[0]>t[1] donc permuter t[0] et t[1] 5 2 3 1 4
0 1 2 3 4
2 3 1 4 5
0 1 2 3 4
Tri d’un tableau/ Tri à bulles
2 3 1 4 5
Pour i=3:
0 1 2 3 4
- t[0]<t[1]
2 3 1 4 5
- t[1]>t[2] donc permuter t[1] et t[2] 0 1 2 3 4
2 1 3 4 5
0 1 2 3 4
- t[2]<t[3]
2 1 3 4 5
0 1 2 3 4
Tri d’un tableau/ Tri à bulles
Pour i=2: 2 1 3 4 5
- t[0]>t[1] donc permuter t[0] et t[1] 0 1 2 3 4
- t[1]<t[2] 1 2 3 4 5
0 1 2 3 4
1 2 3 4 5
0 1 2 3 4
Pour i=1: 1 2 3 4 5
- t[0]<t[1]
0 1 2 3 4
1 2 3 4 5
0 1 2 3 4
Tri d’un tableau/ Tri à bulles
• Implémentation en python:
•Ligne3: faire monter le maximum
du tableau t[:i+1] à l’indice i pour
i=n-1,…,1
•Ligne4-6:Utiliser une variable j
pour parcourir le tableau t[:i+1] et
permuter les éléments t[j] et t[j+1]
si t[j]>t[j+1]
Si t[j]>t[j+1] tableau trié
… … t[i] ….
j j+1 i
t[:i+1]
• Vous pouvez définir vos propres propositions d’implémentations de
tous les algorithmes traités dans ce cours, mais, il faut respecter le
principe de base
• Pour certains algorithmes, on peut donner des versions récursives