Sie sind auf Seite 1von 33

Algorithmique :

Tableaux

LP
2016

A. SOUHAR
Structures de donnes
Variable simple : ne peut reprsenter quune seule
information.

Variable structure : pour reprsenter plusieurs


informations (ncessitant plusieurs cases mmoires).

Si ces informations sont de mme type : tableaux

Mais elles peuvent tre de types diffrents : enregistrements


Tableaux
Dfinition
Structure de donnes qui abrite un ensemble fini
dlments de mme type.
Les lments sont stocks les un la suite des
autres.
1er lment
2 me lment
Tableau

dernier lment
Tableaux
Dclaration
Caractris par un nom, le type des lments et la
taille.
Syntaxe
nom_tableau[1..TAILLE] : type_element

nom_tableau: nom de la variable tableau

type_element: type des lments du tableau,

TAILLE : constante qui indique le nombre maximal dlments


quon peut stocker dans le tableau.
Tableaux
Accs un lment
Chaque lment du tableau est identifi par son rang.

Loprateur dindexation [ ] permet de retourner llment du


tableau dun rang donn.

1er lment Rang 0


2 me lment
Rang 1
Rang 2
Tableau

dernier lment Rang TAILLE-1


Tableaux
Accs un lment
Syntaxe
nom_tableau [exp] ;

exp: une expression dlivrant une valeur entire qui indique le rang de llment
dans le tableau.

Soit T un tableau, T[i] le (i+1)me lment peut tre considr comme une
variable simple sur laquelle on peut effectuer les oprations suivantes :

Saisie : lire(T[i] )

Affichage : ecrire(T[i] )

Affectation :
/*valeur dune constante*/
T[i]= 12
/*valeur dune expression*/
T[i]= (x*3) div 2
/*valeur dune autre variable*/
T[i]= x
lment dune expression :
S=2*PI*T[i]
si ( T[i] >=0) alors T[i]= T[i] * T[i] finsi
Tableaux
Initialisation
Initialisation du tableau par une liste de constantes au
moment de la dclaration.

Linitialisation permet daffecter aux lments, respectivement


et partir de 0, les constantes entre accolades.

Exemples
CAP = 5
entier t[1..CAP] <- {1,2,3,4,8}
Tableaux
Les tableaux sutilisent en gnral avec la boucle
au nombre ditrations

Oprations :
Lecture,
Affichage,
Tri des lments
Recherche dun lment

8
Lecture des lments dun
tableau
.
Pour i0 jusqu (TAILLE-1) faire
crire("Donner llment dindice:",i)
lire(T[i])
FinPour
.
9
Affichage des lments dun
tableau

crire("les lments du tableau sont:")


Pour i0 jusqu (TAILLE -1) faire
crire(T[i]," ")

10
SOMME DES ELEMENTS DUN TABLEAU
dentiers

Algorithme somme
TAILLE = 15
S : entier
T[1..TAILLE]: entier
debut
S0
Pour i0 jusqu (TAILLE -1) faire
S S+T[i]
FinPour
crire("la somme est : ", S)
fin
11
Min/Max DES ELEMENTS DUN TABLEAU
dentiers
Algorithme somme
TAILLE = 15
min,max : entier
T[1..TAILLE]: entier
Dbut
minT[0]
maxT[0]
Pour i1 jusqu (taille-1) faire
Si Min>T[i] alors MinT[i]
Si Max<T[i] alors MaxT[i]
FinPour
crire("le Minimum est : ", Min)
crire("le Maximum est : ", Max)
Fin
12
Tableaux
Opration de tri
Le tri dun tableau consiste ordonner les
lments par:
Ordre croissant: T[0] <= T[1] <= <=T[n-1]
Ordre dcroissant: T[0] >= T[1] >= >=T[n-1]

Plusieurs algorithmes de tri:


Tri par slection
Tri par insertion
Tri par bulles

Tri par slection
Principe
Pour chaque i

Partie trie de Partie non trie de


0 i-1 i n-1

Initialement la partie trie est vide


Tri par slection
Principe
Pour chaque i
1. Slectionner le 1er lment de la partie non trie

Partie trie de Partie non trie de


0 i-1 i n-1

ime lment
Tri par slection
Principe
Pour chaque i
1. Slectionner le 1er lment de la partie non trie
2. Trouver le minimum de la partie non trie

Partie trie de Partie non trie de


0 i-1 i n-1

ime lment
Plus petit lment de
la partie non trie
Tri par slection
Principe
Pour chaque i
1. Slectionner le 1er lment de la partie non trie
2. Trouver le minimum de la partie non trie
3. changer le 1er lment de la partie non trie (i) avec le min

Partie trie de Partie non trie de


0 i-1 i n-1

Plus petit lment de


ime lment
la partie non trie
Permutation
Tri par slection
Exemple
T : 77 33 44 11 88 22 66 55

Passe1: 11 33 44 77 88 22 66 55
Passe2: 11 22 44 77 88 33 66 55
Passe3: 11 22 33 77 88 44 66 55
Passe4: 11 22 33 44 88 77 66 55
Passe5: 11 22 33 44 55 77 66 88
Passe6: 11 22 33 44 55 66 77 88
Passe7: 11 22 33 44 55 66 77 88
Tri par slection
Algorithme

Algorithme tri_selection
T[1..n] : type_element
i, j, min, q : entier
debut
pour i <- 0 jusqu n-2 faire
min= i
pour j <- i+1 jusqu n-1 faire
si (T[j]<T[min])
min <- j
finsi
q <- T[i]
T[i] <- T[min]
T[min] <- q
finpour
fin
Tri par insertion
Principe
A chaque tape i

Partie trie de Partie non trie de


0 i-1 i n-1

Initialement la partie trie contient le 1er lment


Tri par insertion
Principe
A chaque tape i
1. Slectionner, dans la partie non trie, llment insrer

Partie trie de Partie non trie de


0 i-1 i n-1

lment insrer
Tri par insertion
Principe
A chaque tape i
1. Slectionner llment insrer dans la partie non trie
2. Insrer llment slectionn dans la partie trie

Partie trie de Partie non trie de


0 i-1 i n-1

lment insrer
Insertion
Tri par insertion
Exemple
T : 77 33 44 11 88 22 66 55

Passe1: 33 77 44 11 88 22 66 55
Passe2: 33 44 77 11 88 22 66 55
Passe3: 11 33 44 77 88 22 66 55
Passe4: 11 33 44 77 88 22 66 55
Passe5: 11 22 33 44 77 88 66 55
Passe6: 11 22 33 44 66 77 88 55
Passe7: 11 22 33 44 55 66 77 88
Tri par insertion
Algorithme
Algorithme tri_insertion
T[1..n] : type_element
i, j, x : entier
Debut
pour i <- 1 jusqu n-1 faire
x <- T[i]
j <- i
tantque (j>0 et T[j-1]>x)
T[j] <- T[j-1]
j=j-1
fintantque

T[j]=x;
finpour
fin
Tri par bulles
Principe
Placer le plus petit lment au dbut du tableau en comparant
les lments 2 2, et permuter sils ne sont pas dans lordre.

Recommencer avec le reste du tableau

Les bulles remontent !


Tri par bulles
Exemple
T : 77 33 44 11 88 22 66 55

Passe1: 11 77 33 44 22 88 55 66
Passe2: 11 22 77 33 44 55 88 66
Passe3: 11 22 33 77 44 55 66 88
Passe4: 11 22 33 44 77 55 66 88
Passe5: 11 22 33 44 55 77 66 88
Passe6: 11 22 33 44 55 66 77 88
Passe7: 11 22 33 44 55 66 77 88
Tri par bulles
Algorithme

Algorithme tri_bulle
T[1..n] : type_element
i, j, x : entier
debut
pour i <- 0 jusqu n-2 faire
pour j <- n-1 jusqu i+1 dcrment j faire

if (T[j]<T[j-1])
x=T[j]
T[j]=T[j-1]
T[j-1]=x
finsi

finpour
finpour
fin
Tableaux bidimensionnels
Dfinition
Un tableau bidimensionnel de taille (L, C) est Tableau unidimensionnel de
taille L, dont les lments sont des tableaux de taille C.

En mmoire, les lments sont stocks ligne par ligne.


Tableaux bidimensionnels
Exemple
Pour stocker les notes des 12 modules, dune formation, on utilise un
tableau de dimension N et 12, o:
N est le nombre dtudiants dans la section.

Une ligne du tableau reprsente les notes dun tudiant dans les 12
modules.

Une colonne reprsente les notes de tous les tudiants dans un module.

M1 M2 . . . M12
E1 12 09 . . . 16
E2 05 14 . . . 12
.
.
.
En 13.5 15 . . . 16
Tableaux bidimensionnels
Dclaration
nom_tableau[1..MAX_LIN][1..MAX_COL] : type_element

nom_tableau : nom du tableau

type_element : type des lments du tableau.

MAX_LIN et MAX_COL : constantes qui indiquent, le nombre


maximal dlments quon peut stocker dans une ligne, dans une
colonne.
Exemples
// matrice dentiers de 7 lignes et 6 colonnes
matrice[1..7][1..6]:entier ;

//texte de 10 lignes, chacune est forme par 80 caractres


texte[1..10][1..80]: caractre ;

//tableau qui contient les notes dune section


MAX_ETUD = 48 // nombre maximale dtudiants
notes [1..MAX_ETUD][1..12]: rel
Tableaux bidimensionnels
Accs un lment
Syntaxe
nom_tableau[exp1][exp2]

exp1, exp2 : expressions dlivrant des valeurs entires


indiquant respectivement la ligne et la colonne dans le tableau.

nom_tableau[exp1][exp2] est une variable simple sur


laquelle on peut effectuer les oprations:

Saisie, Affichage
Affectation
Facteur dans une expression
etc.
Tableaux bidimensionnels
Exemple
crire un algorithme qui permet de:

Saisir les notes des 12 modules dune


formation.

Calculer la moyenne gnrale de


chaque tudiant

Afficher les notes de toute la section


Tableaux bidimensionnels
Exemple
Algorithme tab_2_dim
NB_MAX_ETUD = 100
NB_MAX_MOD = 13
notes[1.. NB_MAX_ETUD][1.. NB_MAX_MOD], moy : rel
i, j, ne, nm :entier

dbut
// Saisie des notes
crire("donner le nombre dtudiants )
lire(ne)
pour i <- 0 jusqu ne-1 faire
pour j <- 0 jusqu NB_MOD faire
lire(notes[i][j])

// Calcul de la moyenne gnrale


pour i <- 0 jusqu ne-1 faire
moy <- 0.0
pour j <- 0 jusqu NB_MOD faire
moy <- moy+ notes[i][j]
notes[i][12] <- moy/12;
finpour

// Affichage de la moyenne de chaque tudiant


pour i <- 0 jusqu ne-1 faire
crire(notes[i][12])
fin