Académique Documents
Professionnel Documents
Culture Documents
ALGORITHMES FONDAMENTAUX
Semestre I, II
Niveau :
Licence 1 Informatique
DUT 1 Informatique de Gestion
DUT 1 Informatique Maintenance
CONTENU DU MODULE
13/04/2023 2
Prérequis
- Maîtriser les bases de l’algorithmique (Cours Introduction à l’algorithme)
Objectifs
1. Travailler sur des données de plus en plus nombreuses et complexes.
13/04/2023 3
STRUCTURES DE DONNEES ET ALGORITHMES
FONDAMENTAUX
13/04/2023 5
1. Définition d’une structure de données
Dans la plupart des cas, il existe
plusieurs manières de représenter les données et
différents algorithmes de manipulation.
On distingue généralement l’interface des structures de leur implémentation.
13/04/2023 6
2. Structure de données et algorithmes en pratique
La résolution de problème algorithmiques requiert presque toujours la combinaison de
structures de données et d’algorithmes sophistiqués pour la gestion et la recherche dans ces
structures.
D’autant plus vrai qu’on a à traiter des volumes de données importants.
13/04/2023 7
STRUCTURE DE DONNEES ET ALGORITHMES
FONDAMENTALS
13/04/2023 9
1. Introduction, définition et déclaration d’un tableau
Jusqu’à présent nous n’avons manipulé que des variables simples.
Imaginez que l’on veuille attribuer 15 valeurs représentant l’âge
de 15 personnes. Pour ce faire, nous déclarons 15 variables de
type entier et nous passons à la saisie des valeurs.
Maintenant imaginez refaire ce même travail pour 1000 voire 2000 personnes
Pour effectuer des traitements plus complexes avec un maximum d’efficacité, il est nécessaire d’utiliser
des types de données plus évolués parmi lesquels les tableaux que nous développerons dans ce
chapitre.
13/04/2023 10
1. Introduction, définition et déclaration d’un tableau
Définition :
Un tableau est un ensemble de données qui sont toutes de même type, possèdent un
identificateur unique ( le nom du tableau) et se différencient les unes des autres, dans ce
tableau, par leur numéro d’indice.
Un tableau est déclaré comme un type particulier de données. Nous lui donnons un nom,
une valeur d’indice minimale et valeur d’indice maximale correspondant au nombre
maximal de cases le composant. Nous déclarons également l’indice qui permet d’adresser
les différentes cases. L’indice doit être obligatoirement un entier et l’indice minimale
est strictement inferieur à l’indice maximale.
Autre Définition :
Un tableau (Vecteur) est une suite de cases contiguës en mémoire centrale ayant un
identifiant unique telle que :
le nombre d'éléments du tableau (dimension ou taille) est constant,
l'accès aux éléments s'effectue directement par la clé,
les valeurs minimum et maximum des clés sont des constantes.
13/04/2023 11
1. Introduction, définition et déclaration d’un tableau
Syntaxes de déclaration: Il existe plusieurs façon de déclarer un tableau:
Nom du tableau
Valeurs
Note: Si l’indice Min du tableau est à 0, alors sa taille est : Indice Max – Indice Min + 1
Cas de l’exemple 1:
Indice
1 2 3 4 5 6 7 8 9 10
13/04/2023 Valeur 13
2. Accès à un élément du tableau
L’accès à un élément du tableau ne se fait que par son approche numérique (Accès direct),
en indiquant entre parenthèses ou crochets le rang de l’élément à lire ou à écrire ; c’est-à-
dire son indice.
Pour accéder à un élément du tableau nommé TAB d'indice i, on écrit:
TAB(i) ou TAB[i]
13/04/2023 14
3. Création d’un tableau (Saisie)
La création d’un tableau consiste en un remplissage des différentes cases qui le
constituent. Cette opération peut se faire de deux manières différentes:
en renseignant les cases une à une à partir de la première,
en adressant les cases directement, et ce dans un ordre quelconque.
Remarque: Le nom d’un tableau n’est jamais utilisé seul: Dans toutes les instructions (Saisie, Affichage,
Calcul, Test), il est toujours suivi d’un indice entouré de parenthèses ( ) ou de crochets [ ].
13/04/2023 15
4. Edition d’un tableau (Affichage)
On parcourt les différentes cases du tableau en faisant varier l’indice et on affiche leur
contenu au fur et à mesure.
13/04/2023 16
5. Les différentes opérations possibles sur les tableaux
Dans un tableau de données, il est possible de faire plusieurs sortes de opérations, nous
pouvons ajouter, rechercher, modifier et supprimer les éléments d’un tableau. Il existe
aussi d’autre opérations plus complexe.
Soit un tableau d’entier « Ages » de taille 10, contenant les âges de personnes. Nous voulons
calculer l’âge cumulé de ces dix personnes.
13/04/2023 17
5. Les différentes opérations possibles sur les tableaux
Opération somme des éléments d’un Algorithme Somme_Elément_Tableau
Variables:
tableau :
Ages(1:10): Tableau d’entiers
somme, i: entiers
Début
{Saisie des éléments du tableau}
pour (i:=1 à 10 ) faire
écrire (‟Entrez un nombre”)
lire (Ages (i) )
Finpour
{Initialisation de la somme}
somme 0
{Edition du résultat}
écrire (‟ La somme est ”, somme)
Fin
13/04/2023 18
FinAlgorithme
Algorithme Recherche_Elément_Tableau
5. Les différentes opérations Variables:
N: entier { Taille du tableau }
possibles sur les tableaux TAB [1: N ] : Tableau d’entiers
val : entier { Valeur à rechercher dans le tableau }
i: entier
trouve : booléen
Opération de recherche d’un élément: Début
{Initialisation}
Recherche séquentielle Trouve FAUX
i1
La recherche consiste à partir du début d’un
{Recherche de l’élément val}
tableau, à comparer l’élément rencontré à celui Tantque (i < = N) ET (trouve = FAUX) faire
que l’on cherche. Si ce dernier est différent Si ( TAB [i] = = val ) Alors
alors on passe à l’indice suivant ; sinon on trouve VRAI
Sinon
arrête l’opération car l’information recherchée
i i+1
est trouvée. FinSi
FinTantque
{Affichage du résultat}
Si (trouve) Alors
Ecrire (‟ l’élément val existe dans ce tableau ”)
Sinon
Ecrire (‟ l’élément val n’existe pas dans ce tableau ”)
Finsi
Fin
FinAlgorithme
13/04/2023 19
Algorithme Recherche_Elément_Tableau
5. Les différentes opérations Variables:
TAB [ N ] : Tableau d’entiers { ordonné par ordre croissant }
possibles sur les tableaux val : entier
borneInferieur, borneSuperieur, milieu: entier
trouve : booléen
Début
Opération de recherche d’un élément: { Initialisation des variables }
borneInferieur 1
Recherche dichotomique borneSuperieur N
Trouve FAUX
{Recherche de l’élément val}
Le principe de la recherche dichotomique Tantque (trouve = FAUX) ET (borneInferieur <= borneSuperieur) faire
réside dans la division successive de milieu (borneInferieur + borneSuperieur) / 2
Si ( TAB [milieu] = = val ) Alors
l’espace de recherche en deux dans un trouve VRAI
vecteur ordonné sur le critère de Sinon Si ( TAB [milieu] < val ) Alors
borneInferieur milieu + 1
recherche. Sinon
borneSuperieur milieu – 1
FinSi
FinSi
FinTantque
{Affichage du résultat}
Si (trouve) Alors
Ecrire (‟ l’élément val existe dans ce tableau ”)
Sinon
Ecrire ( ‟ l’élément val n’existe pas dans ce tableau ”)
Finsi
Fin
13/04/2023 FinAlgorithme 20
5. Les différentes opérations possibles sur les tableaux
Opération d’ajout d’un élément:
Cette opération ne peut se faire qu’au cas où il y a de l’espace libre dans le vecteur. Il faut au
moins une cellule non utilisée pour la réaliser.
Algorithme Ajout_Elémént_Tableau
Variables:
TAB [ N ] : Tableau d’entiers
val, i : entier { val: valeur à insérer, compteurs des boucles }
Nbre_Elmt, pos : entier {position de l’élément à ajouter}
Début
Si (Nbre_Elmt < N) alors
Nbre_Elmt Nbre_Elmt +1
pour ( i allant de Nbre_Elmt à pos -1 ) faire
TAB [i+1] TAB [i]
Finpour
TAB[pos] val
Sinon
Ecrire ("Saturation du tableau")
Finsi
Fin
FinAlgorithme
13/04/2023 21
5. Les différentes opérations possibles sur les tableaux
Opération de suppression d’un élément:
L’utilisateur donnera l’indice de la valeur qu’il souhaite supprimer. Attention, il ne s’agit pas de remettre une
valeur à zéro, mais bel et bien de la supprimer du tableau lui-même ! Si le tableau de départ était :
13/04/2023 22
5. Les différentes opérations possibles sur les tableaux
Opération de suppression d’un élément:
Algorithme Suppression_Elémént_Tableau
Variables:
TAB [ N ] : Tableau d’entiers
i : entier { compteurs des boucles }
pos : entier {position de l’élément à supprimer}
Début
Si (pos > N) alors
Ecrire(" Position incorrecte ")
Sinon Si (N = 0) alors
Ecrire("Tableau vide")
Sinon
pour ( i allant de pos à N-1 ) faire
TAB [i] TAB [i+1]
Finpour
N N-1
FinSi
Finsi
Fin
FinAlgorithme
13/04/2023 23
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau:
Le tri est une opération qui consiste à classer des données selon un ou plusieurs critères ou selon un certain
ordre. L’opération de tri est très importante et très utilisée dans les programmes informatiques utilisant les
algorithmes de recherche.
Imaginez que l’on dispose d’un dictionnaire non trié, comme il serait fastidieux de trouver un mot. Combien
de temps nous faudra-t-il pour retrouver le mot que l’on cherche ?
Au niveau des algorithmes qui vont suivre, nous supposerons que nous disposons d’un Tableau nommée TAB
de taille N (de type entier) remplie et non trié, l’indice minimum est à 0.
13/04/2023 24
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau: 1. Tri par sélection
Méthode :
on cherche l’élément de plus petite valeur pour l’échanger avec l’élément en première position ;
puis on cherche l’élément ayant la deuxième plus petite valeur pour l’échanger avec l’élément en deuxième
position ;
et ainsi de suite.
Il faut :
• 1 boucle pour parcourir le tableau et sélectionner tous les éléments ;
13/04/2023 25
5. Les différentes opérations possibles sur les tableaux
Algorithme Tri_Sélection_Tableau
Les algorithmes de tri d’un tableau: Variables:
TAB [ N ] : Tableau d’entiers { Tableau à trié}
1. Tri par sélection
i, j: entier { compteurs des boucles }
min : entier { indice du minimum du tableau}
aux : entier { Variable auxiliaire utilisé pour la permutation }
Début
pour (i allant de 0 à N-1) faire // Sélection d’un élément
min i
pour (j allant de i+1 à N) faire // Recherche du min
Si ( TAB [j] < TAB [min]) Alors
min j
FinSi
Finpour
{Permutation}
aux TAB [i]
TAB [i] TAB [min]
TAB [min] aux
Finpour
Fin
13/04/2023 FinAlgorithme 26
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau: 2. Tri par insertion
Méthode :
on considère les éléments les uns après les autres en insérant chacun à sa place parmi les éléments déjà triés.
Il faut :
• 1 boucle pour parcourir le tableau et sélectionner l’élément à
insérer ;
• 1 boucle pour décaler les éléments plus grands que l’élément à
insérer ;
• insérer l’élément.
13/04/2023 27
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau:
2. Tri par insertion Algorithme Tri_Insertion_Tableau
Variables:
TAB [ N ] : Tableau d’entiers { Tableau à trié}
i, j: entier { compteurs des boucles }
mem : entier { le minimum du tableau}
Début
pour (i allant de 1 à N-1) faire // Sélection d’un élément à inséré
mem TAB [i]
ji
Tantque (j > 0 et TAB [j-1] > mem) faire // Décalage éléments plus grands
TAB [j] TAB [j-1])
j j-1
FinTanque
Finpour
Fin
13/04/2023 FinAlgorithme 28
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau: 3. Tri à bulle
Méthode :
On parcourt le tableau en comparant deux éléments consécutifs ; s’ils sont mal placés, on les permute. Cela
revient à faire remonter le plus grand élément à chaque parcours. Comme une bulle d’air qui remonte à la
surface de l’eau, d’où le nom de tri à bulles. (Il est aussi appelé tri par permutation ou tri par échanges).
Il faut :
• 1 boucle pour parcourir tout le tableau et sélectionner les éléments un à un ;
13/04/2023 • 1 boucle pour permuter les éléments adjacents. 29
5. Les différentes opérations possibles sur les tableaux
Les algorithmes de tri d’un tableau:
3. Tri à bulle Algorithme Tri_Bulle_Tableau
Variables:
TAB [ N ] : Tableau d’entiers { Tableau à trié}
i, j: entier { compteurs des boucles }
aux : entier {variable intermédiaire pour les permutation}
Début
pour (i allant de N-1 à 0) faire // Sélection de l’élément à inséré
pour (j allant de 1 à i+1) faire // Décalage éléments plus grands
Si (TAB [j-1] > TAB [j]) alors
aux TAB [j-1]
TAB [j-1] TAB [j]
TAB [j] aux
Finsi
Finpour
Finpour
Fin
13/04/2023 FinAlgorithme 30
6. Les tableaux à deux dimensions (Matrices)
Les tableaux manipulé jusqu’à présent dans ce chapitre sont de dimension un. Et
lorsqu’un traitement utilise plusieurs tableaux à une dimension, ayant le même nombre
d’éléments et subissant le même traitement, on utile un seul tableau à deux dimensions.
Cette nouvelle forme de tableau possède un identifiant unique. Chaque élément est
identifié par deux indice: l’un indiquant la ligne et l’autre la colonne.
<nom_du_tableau>(indice_ligne_minimale : indice_ligne_maximale,
indice_colonne_minimale : indice_colonne_maximale ) :
Tableau de <Type_données>
<nom_du_tableau> : Tableau [indice_ligne_minimale…indice_ligne_maximale]
[indice_colonne_minimale…indice_colonne_maximale]
de <Type_données>
13/04/2023 32
6. Les tableaux à deux dimensions (Matrices)
Représentation graphique:
Indice col Max
Indice col Min
Colonne
Ligne 0 1 2 …….. …….. M
éléments
Note: ici, nous avons représenté un tableau à deux dimensions de N lignes et M colonnes donc
pouvant contenir ( N x M ) éléments tous de même types.
13/04/2023 33
6. Les tableaux à deux dimensions (Matrices)
Exemple: Ages : Tableau [4][7] d’entiers
0 1 2 3 4 5 6
0 25 12 30 6 8 32 1
1 2 77 4 0 20 99 10
Ages 2 7 3 100 6 1 1 26
3 29 5 2 43 0 15 9
Tout comme pour un tableau à une dimension, l’accès aux éléments d’un tableau à plusieurs dimensions
se fait de façon direct, ont indiquant le nom du tableau suivit de l’indice de la ligne et celle de la colonne
entre les crochets, comme le montre l’exemple ci-dessous :
Ages[0][0] = 25 Ages[3][1]= 5
Ages[1][3] = 0 …
Ages[2][2] = 100 Ages[3][6] = 9
13/04/2023 34
6. Les tableaux à deux dimensions (Matrices)
Algorithme Remplissage_Affichage_Matrice
Opération sur les matrices: Var:
Toute les opérations vues sur les tableaux à une N, M : entier
Nombre [N][M]: Tableau d’entiers
dimensions sont aussi valables pour les matrices.
i, j : entier
Début
{Remplissage éléments de la matrice}
Remplissage et affichage d’une matrice : pour (i := 0 à N-1 ) faire
pour (j := 0 à M-1 ) faire
écrire ‟Entrez un nombre”
lire ( Nombre[i][j] )
Finpour
Finpour
Algorithme RechercheElément_Matrice
Var:
N, M : entier
Nombre [N][M]: Tableau d’entiers
i, j, val: entier
Début
écrire (‟ Entrez l’élément à rechercher ”)
lire (val)
pour (i := 0 à N-1 ) faire
pour (j := 0 à M-1 ) faire
si ( Nombre[i][j] = val ) Alors
écrire ( ‟ Le nombre ”, val, ‟ existe”)
sinon
écrire (‟ Le nombre ”, val, ‟ existe”)
Finsi
Finpour
Finpour
Fin
FinAlgo
13/04/2023 36
6. Les tableaux à deux dimensions (Matrices)
Note:
On peut également déclaré des tableaux de dimension supérieur à 2.
Syntaxe:
<nom_du_tableau>[dimension_1] [dimension_2] … [dimension_N] Tableau de <Type_données>
Par principe il n’est pas conseiller de manipuler les tableaux à plus de 3 dimensions, si vous n’ete pas
un bon mathématicien, car cela relève du domaine de la modélisation dans hyperespace.
13/04/2023 37
Conclusion
Avantages : accès direct au iéme élément.
13/04/2023 38