Structures de Données et Tableaux
Structures de Données et Tableaux
Algorithme Moyenne
Variables:
T : Tableau de 6 cases de réels
Début
.......
Fin
Lire ou modifier une case du
tableau
• Chaque case du tableau T correspond à une
variable individuelle dont le nom est T[indice].
• Ex : Taille(T)
• D’autres fonctions ?
Remplir un tableau
Algorithme Remplissage
Variables
Tab : Tableau de 10 cases
d’entiers;
i : entier;
Début
pour i allant de 0 à Taille(Tab)-1 faire
Tab[i] ← Saisie();
fin pour
Fin
Traiter un tableau
Algorithme Case du maximum
Variables
Tab: Tableau de 10 cases d’entiers;
i, imax : entier;
Début
imax ← 0;
pour i allant de 0 à Taille(Tab)-1 faire
si (Tab[i]>Tab[imax])
alors imax ← i;
fin si
fin pour
Fin
Traiter un tableau
accu ← 0;
pour i allant de 0 à 99 faire
accu ← accu +Tab[i] ;
fin pour
Traiter un tableau
accu ← 0;
pour i allant de 0 à 99 faire
accu ← accu +Tab[i] ;
fin pour
pour i allant de 0 à 98 faire
Tab[i] ← Tab[i+1] ;
fin pour
Traiter un tableau
accu ← 0;
pour i allant de 0 à 99 faire
pour i allant de 1 à 99 faire
accu ← accu +Tab[i] ;
Tab[i] ← Tab[i-1]
fin pour
fin pour
pour i allant de 0 à 98 faire
Tab[i] ← Tab[i+1] ;
fin pour
Traiter un tableau
accu ← 0;
pour i allant de 0 à 99 faire
pour i allant de 1 à 99 faire
accu ← accu +Tab[i] ;
Tab[i] ← Tab[i-1]
fin pour
fin pour
pour i allant de 0 à 98 faire
Tab[i] ← Tab[i+1] ;
fin pour
pour i allant de 0 à 48 faire
aux ← Tab[i] ;
Tab[i] ← Tab[99-i] ;
Tab[99-i] ← aux ;
fin pour
et Python dans tout ça…
Dans les langages de programmation haut niveau,
comme Python, il existe différentes structures de
données permettant de stocker des informations :
for i in range(len(T)):
….T[i]..... # accès en lecture/écriture
à T[i]
for v in T:
…. v …. # accès en lecture à T[i], via v
Les listes
La structure la plus flexible, privilégiées dans de
nombreuses applications pour sa facilité d’utilisation.
for i in range(len(L)):
….L[i]..... # accès en lecture/
écriture à L[i]
for v in L:
…. v …. # accès en lecture à L[i], via v
Les listes, c’est aussi
L=[0]*5 # Création d’une
liste de 5 zéros
[1,2,3]+[2,3,4] # concaténation de listes
[Link](5) # ajout d’un élément
en bout de liste
[Link]() # retire le dernier
élément de la liste
D=dict()
D[“nom”] = “Bourdon”
D[“prenom”] = “Jérémie”
D[“dpt”] = 44
ou encore
D={"nom":"Bourdon", "prenom":"Jérémie", "dpt":44}
Les dictionnaires
si D={"nom":"Bourdon", "prenom":"Jérémie", "dpt":44}
len(D) vaut 3, le nombre de clés
for cle in D:
….cle…
….D[cle]....
Et si on combinait…
Mis à part les [Link], les valeurs stockées dans
ces structures de données peuvent être de n’importe
quel type, y compris des types complexes.
1,0
9 1,1
10 1,2
11 1,3
12 1,4
13 1,5
14 1,6
15 1,7
16 1,8
17
2,0
18 2,1
19 2,2
20 2,3
21 2,4
22 2,5
23 2,6
24 2,7
25 2,8
26
3,0
27 3,1
28 3,2
29 3,3
30 3,4
31 3,5
32 3,6
33 3,7
34 3,8
35
4,0
36 4,1
37 4,2
38 4,3
39 4,4
40 4,5
41 4,6
42 4,7
43 4,8
1,0
9 1,1
10 1,2
11 1,3
12 1,4
13 1,5
14 1,6
15 1,7
16 1,8
17
2,0
18 2,1
19 2,2
20 2,3
21 2,4
22 2,5
23 4*9+8=44
2,6
24 2,7
25 2,8
26
3,0
27 3,1
28 3,2
29 3,3
30 3,4
31 3,5
32 3,6
33 3,7
34 3,8
35
4,0
36 4,1
37 4,2
38 4,3
39 4,4
40 4,5
41 4,6
42 4,7
43 4,8
1,0
9 1,1
10 1,2
11 1,3
12 1,4
13 1,5
14 1,6
15 1,7
16 1,8
17
2,0
18 2,1
19 2,2
20 2,3
21 2,4
22 2,5
23 4*9+8=44
2,6
24 2,7
25 2,8
26
3,0
27
Pour pouvoir renuméroter, il suffit
3,1
28 3,2
29 3,3
30 3,4
31 3,5
32 3,6
33 3,7
34 3,8
35
4,0
36
de fixer la largeur l du tableau. La
4,1
37 4,2
38 4,3
39 4,4
40 4,5
41 4,6
42 4,7
43 4,8
1
1,0 1,1 1,2 1,3 1,4 1,5 1,6 1,7 1,8
2
2,0 2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8
6
7,0 7,1 7,2 7,3 7,4 7,5 7,6 7,7 7,8
7
Les tableaux à deux dimensions
0 0,0
Revoir la définition...
0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8
3 3,0
3,0
3,1
3,1
3,2
3,2
3,3
3,3
3,4
3,4
3,5
3,5
3,6
3,6
3,7
3,7
3,8
3,8
1 1,0
0 1,1
1 1,2
2 1,3
3 1,4
4 1,5
5 1,6
6 1,7
7 1,8
8
2 2,0
0 2,1
1 2,2
2 2,3
3 2,4
4 2,5
5 2,6
6 2,7
7 2,8
8
2,0 2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8
3 3,0
0
3,0
3,1
1
3,1
3,2
2
3,2
3,3
3
3,3
3,4
4
3,4
3,5
5
3,5
3,6
6
3,6
3,7
7
3,7
3,8
8
3,8
6 6,0
0 6,1
1 6,2
2 6,3
3 6,4
4 6,5
5 6,6
6 6,7
7 6,8
8
7 7,0
0 7,1
1 7,2
2 7,3
3 7,4
4 7,5
5 7,6
6 7,7
7 7,8
8
Les tableaux à deux dimensions
0 0,0
0
Revoir
0,1
1
la
0,2
2
définition...
Un tableau à deux dimensions peut être défini
0,3
3 0,4
4 0,5
5 0,6
6 0,7
7 0,8
8
1 1,0
0
1,0
1,1
1
1,1
tableau.
1,2
2
1,2
1,3
3
1,3
1,4
4
1,4
1,5
5
1,5
1,6
6
1,6
1,7
7
1,7
1,8
8
1,8
La2 valeur stockée en position (x,y) correspond donc à
2,0
0 2,1
1 2,2
2 2,3
3 2,4
4 2,5
5 2,6
6 2,7
7 2,8
8
3 3,0
0
3,0
3,1
1
3,1
2T[x][y] !!!
3,2
3,2
3,3
3
3,3
3,4
4
3,4
3,5
5
3,5
3,6
6
3,6
3,7
7
3,7
3,8
8
3,8
6,0 6,1
T=[ [1,5], [7,9], [3,4] ];
6,2 6,3 6,4 6,5 6,6 6,7 6,8
6 6,0
0 6,1
1 6,2
2 6,3
3 6,4
4 6,5
5 6,6
6 6,7
7 7 9
6,8
8
• En Python
• T = [[1,2],[3,4],[5,6]]
• T[2][1] = 8
• print(T[1][0]) # Affiche 3
• ou en utilisant un [Link]
• T =[Link](shape=(nb_l,nb_c))
Aller plus loin
Quelques exemples de plus
Recherche d’un élément dans un tableau
7 3 5 15 11 14 6 12 19 1 9 10
7 3 5 15 11 14 6 12 19 1 9 10
1 3 5 6 7 9 10 11 12 14 15 19
1 3 5 6 7 9 10 11 12 14 15 19
1 3 5 6 7 9 10 11 12 14 15 19
1 3 5 6 7 9 10 11 12 14 15 19
1 3 5 6 7 9 10 11 12 14 15 19
1 3 5 6 7 9 10 11 12 14 15 19
1 3 5 6 7 9 10 11 12 14 15 19
1 3 5 6 7 9 10 11 12 14 15 19
1 3 5 6 7 9 10 11 12 14 15 19
1 3 5 6 7 9 10 11 12 14 15 19
v1.0
x = int(input("Valeur recherchée : "))
trouve = False
i=0
Algorithme Recherche_1 while (not trouve and i<len(montab)) :
Variables: if (montab[i] == x):
x,i :entier; trouve = True
montab : Tableau; i = i+1
trouvé :booléen;
Début
print(trouve)
// montab est supposé rempli
x ← Saisie();
trouvé ← faux;
i ←0;
tant que (non trouvé et i < Taille(montab)) faire
si (montab[i]=x)
alors trouvé ←vrai;
fin si ;
i ←i+1;
fin tant que
Ecrire(trouvé);
Fin
Recherche d’un élément
dans un tableau trié
Algorithme Recherche_2
Variables:
x,i :entier;
montab : Tableau;
Début
// montab est supposé rempli
x ← Saisie();
i ←0;
tant que (montab[i] ≤ x et i < Taille(montab)) faire
i ←i+1;
fin tant que
Ecrire (montab[i]=x);
Fin
Recherche d’un élément
dans un tableau trié # Algorithme Recherche_2
montab=[5, 8, 9, 10, 11, 13] # par exemple
Algorithme Recherche_2 x = int(input("Valeur recherchée : "))
Variables: i=0
x,i :entier; while (i<len(montab) and montab[i] < x) :
i=i+1
montab : Tableau;
Début if i<len(montab):
// montab est supposé rempli print(montab[i] == x)
x ← Saisie(); else:
print(False)
i ←0;
tant que (montab[i] ≤ x et i < Taille(montab)) faire
i ←i+1;
fin tant que
Ecrire (montab[i]=x);
Fin
Recherche d’un élément
dans un tableau trié (rapide)
Algorithme Recherche_3
Variables:
x :entier;
début, fin, milieu:entier;
montab : Tableau;
Début
// montab est supposé rempli
x ← Saisie();
début ←0;
fin ← Taille(montab)-1;
Tant que ((fin - début) > 0) faire
milieu ← (début+fin) div 2;
si (montab[milieu]<x)
alors fin ← milieu;
sinon début ← milieu;
fin si
fin tant que
Ecrire (montab[début]=x);
Fin
Recherche d’un élément
dans un tableau trié (rapide) # Algorithme Recherche_3
montab=[5, 8, 9, 10, 11, 13] # par exemple
Algorithme Recherche_3 x = int(input("Valeur recherchée : "))
Variables: debut=0
x :entier; fin=len(montab)
début, fin, milieu:entier; while (fin-debut>1) :
montab : Tableau; milieu = (debut+fin)//2
Début
print(debut,milieu,fin)
// montab est supposé rempli
if x<montab[milieu]:
x ← Saisie();
début ←0;
fin = milieu
fin ← Taille(montab)-1; else:
Tant que ((fin - début) > 0) faire debut = milieu
milieu ← (début+fin) div 2;
si (montab[milieu]<x) print(debut,fin)
alors fin ← milieu; if (montab[debut] == x or montab[fin] == x):
sinon début ← milieu; print("trouvé")
fin si else:
fin tant que print("non trouvé")
Ecrire (montab[début]=x);
Fin
Trions un peu…
Après
7 3 5 15 11 14 6 12 10 1 9 19
On pourrait itérer
b)-j
Ta
le(
ax
il
Avant
im
Ta
7 3 5 15 11 14 6 12 19 1 9 10
Après Échange !
7 3 5 15 11 14 6 12 10 1 9 19
Tri maximum
Algorithme Tri maximum
Variables
Tab : Tableau d’entiers;
i,j,tmp : entiers;
Début
// On suppose que Tab est déjà rempli
pour j allant de 1 à Taille(Tab) faire
imax ← 0;
pour i allant de 0 à Taille(Tab)-j faire
si (Tab[i] >Tab[imax])
alors imax ← i;
fin si
fin pour
tmp ← Tab[i];
Tab[i] ← Tab[imax];
Tab[imax] ← tmp;
fin pour
// Le tableau Tab est trié
Fin
Caractéristiques des
tableaux
❑ Structure de données statique