Rapport TP S1 Alsds PDF
Rapport TP S1 Alsds PDF
Rapport TP S1 Alsds PDF
TP
EN ALGORITHMIQUE ET
STRUCTURES DE DONNEES
STATIQUES (ALSDS)
REALISE PAR :
BENNOUR Salah Eddine Hamza
DJELLAL Meriem
Section : A
Groupe N° : 02
Semestre 1
ESI-CPI-Rapport de TP
SOMMAIRE
1 Introduction ......................................................................................................................................... 4
2 L’énoncé .............................................................................................................................................. 4
3 La solution ........................................................................................................................................... 5
3.2.1.4 Le programme................................................................................................................... 8
3.2.2.4 Le programme..................................................................................................................10
3.2.3.4 Le programme..................................................................................................................12
3.2.4.4 Le programme..................................................................................................................14
3.2.5.4 Le programme..................................................................................................................16
3.2.6.4 Le programme..................................................................................................................18
4 Conclusion ..........................................................................................................................................20
1 Introduction
L’informatique est un domaine spécialisé dans le traitement automatique de l’information et
l’organisation des bases de données, c’est un domaine où le traitement de l’information est plus important
que l’information elle-même, d’où la nécessité d’un ensemble de moyens pour gérer ces données (tel que les
tableaux) : les algorithmes de tri permettant, comme indique leur nom, de faire un tri d’une collection
d’objets selon une relation prise. On en distingue plusieurs: le tri par bulle, par insertion, par transposition, tri
par comptage (en utilisant trois tables, deux tables et une table) et tri par paniers.
On peut aussi rechercher des valeurs dans une structure statique (tableaux) en utilisant deux types de
recherche : une recherche séquentielle qui s’établit sur un tableau quelconque et une recherche dichotomique
qui s’applique essentiellement sur des tableaux ordonnés (triés déjà auparavant).
2 L’énoncé
Tri par paniers et recherche séquentielle et dichotomique dans un tableau à une dimension.
On crée autant de paniers qu’il y a de nombre entre min et max (max – min +1).
Construction de la table triée en prenant à chaque fois le nombre des éléments de chaque
panier par ordre.
2. Remplissage d’un tableau de 50000 éléments entiers par des valeurs aléatoires comprises entre 1 et
30000.
4. Donnons les résultats (positon, nombre d’itérations) selon les deux types de recherche.
3 La solution
3.1 Le découpage modulaire et la justification
3.1.1 La justification :
Nous aurons besoin des modules suivants :
Tri_panier : pour faire le tri d’un tableau à une dimension par la méthode de paniers (construire le tri
par paniers) ce dernier comportera les modules :
Panier : pour créer un tableau à partir d’un autre et dont chaque élément contient la fréquence
d’apparition de l’indice de cet l’élément dans l’autre tableau.
Procédure
Var X : tab
Tri_panier
Taille : entier
Procédure
Panier
Procédure
Rang_tab
par ranger l’élément i (P[i] fois) dans T puis i+1 (p [i+1] fois)
Procédure
trouver (ou pas) Val, dans ce cas elle renvoie vrai, le nombre d’itération, et la
Procédure
3.2.1.1 L’analyse
Construire le tableau de paniers P (en calculant Panier (Taille, X, P, Tai)). //utilisation du
module panier
Calculer Rang_tab (Tai, P, T, Tail) afin de ranger les numéros de paniers P selon leurs jetons
dans T. //utilisation du module Rang_tab
3.2.1.2 L’algorithme
Variables P : TAB
DEBUT
FIN
3.2.1.3 Le déroulement
Si on introduit un tableau de taille 10 comme ceci :
I 1 2 3 4 5 6 7 8 9 10
X[i] 55 60 72 85 61 86 55 85 43 63
I 1 2 3 4 5 6 7 8 9 10
X[i] 43 55 55 60 61 63 72 85 85 86
3.2.1.4 Le programme
3.2.2.1 L’analyse
Pour ce module on aura besoin des modules suivants :
Max (Tail, X) // Donne le plus grand élément du tableau X à une dimension de taille Tail
Freqnbt (i, Tail, X) // Calculer la fréquence de l’élément i dans le tableau X à une dimension
- Si le plus grand élément est nul alors le tableau de paniers est nulle (Le tableau ne contient pas d’éléments
nuls dans notre cas).
- On varie i de 1 à max (taille, X) et à chaque itération on met freqnbt (i, Taille, X) dans P[i] (la fréquence
d’apparition de i dans X), la taille de P est la valeur maximum de X (max (Taille, X)).
3.2.2.2 L’algorithme
PROCEDURE PANIER (Taille : ENTIER ; X : TAB ; VAR P : TAB ; VAR tai : ENTIER)
Variables i : ENTIER
DEBUT
SINON
DSI
FSI
FIN
3.2.2.3 Le déroulement
Si on introduit X comme ceci : (taille =20)
I 1 2 3 4 5 6 7 8 9 10
X[i] 11 12 15 17 13 18 11 17 9 13
Le tableau de paniers :
I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
X[i] 0 0 0 0 0 0 0 0 1 0 2 1 2 0 1 0 2 1
3.2.2.4 Le programme
3.2.3.1 L’analyse
Pour ce module on aura besoin des modules suivants :
Max (Tail, X)// Donne le plus grand élément du tableau X à une dimension de taille Tail
Frenbt (i, Tail, X)// Calculer la fréquence de l’élément i dans le tableau X à une dimension
o On met 0 dans K
o Et tant que la condition k < P[i] reste vérifiée on répète le processus suivant :
On incrémente k
On incrémente ind
(Ce bloc est pour assurer le rangement de i dans un nombre de cases égales à P[i])
3.2.3.2 L’algorithme
PROCEDURE Rang_tab (Tai : ENTIER ; P : TAB ; VAR T : TAB ; VAR tail : ENTIER)
DEBUT
Ind ← 0
DPOUR
k←0
DTQ
k ← k+1
ind ← ind +1
T[ind] ← i
FTQ
FPOUR
Tail ← ind
FIN
3.2.3.3 Le déroulement
Le tableau initial :
i 1 2 3 4 5 6 7 8 9 10
T[i] 7 7 8 10 7 10 6 10 5 7
i 1 2 3 4 5 6 7 8 9 10
P[i] 0 0 0 0 1 1 4 1 0 3
Le tableau trié :
i 1 2 3 4 5 6 7 8 9 10
T ' [i] 5 6 7 7 7 7 8 10 10 10
3.2.3.4 Le programme
Le module Rechdich
3.2.3.6 L’analyse
On met 1 dans j (c’est la plus petite case), taille dans i (c’est la plus grande case).
On se positionne sur la moitié du tableau (la case du milieu du tableau) //on calcule l’indice du
centre du tableau ind= (i+j)/2
Si X[ind] = Val (la case contient l’élement recherché) on met vrai dans existe ( ind dans pos)
Sinon si val<T[ind] alors i=ind-1 (Val de se trouve à gauche) sinon val se trouve à droite j=ind+1 on
répète le processus précédent jusqu’à trouver Val ou parcourir tout le tableau(0 dans pos) .
3.2.3.7 L’algorithme
DEBUT
j←1
i ← taille
existe ← FAUX
iter ← 0
Répéter
Iter ← iter+1
SINON i ← ind – 1
3.2.3.8 Le déroulement
Pour un tableau de taille de 20 cases :
I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
X[i] 6 28 30 39 39 43 44 48 55 55 60 61 63 65 72 85 85 86 90 97
La valeur 20 55 VRAI 10 1
3.2.3.9 Le programme
3.2.4.1 L’analyse
On met faux dans existe
On repète le processus suivant jusqu’à trouver la valeur Val ou arriver à l’extrémité du tableau
Réalisé par : BENNOUR-DJELLAL-G02 14
ESI-CPI-Rapport de TP
3.2.4.2 L’algorithme
DEBUT
Existe ← FAUX
Iter ← 0
Pos ← 0
DSI
Pos ← iter
Existe ← VRAI
FSI
FIN
3.2.4.3 Le Déroulement
Pour un tableau de taille de 20 cases :
I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
X[i] 6 6 8 9 7 9 6 9 5 7 7 4 5 3 9 1 10 3 4 5
La valeur 20 7 VRAI 5 5
3.2.4.4 Le programme
3.2.5.1 L’analyse
On aura besoin des module suivants :
Min (tai : entier, T : tab) : entier//donne le plus petit élément du tableau T à une dimension de taille tai
Max (tai : entier, T : tab) : entier//donne le plus grand élément du tableau T à une dimension de taille tai
Remp_alea (tai : entier, val_max : entier, var T : tab)//remplir un tableau par des valeurs aléatoires
comprises entre [0, val_max] à partir de la fonction standard random
On remplit un tableau T par des valeurs aléatoires //en utilisant le module Remp_alea
Puis on calcule le nombre d’itérations nécessaires pour trier le tableau T en utilisant le tri par
paniers // utilisation des modules min et max //par la formule suivante : max(T)-min(T) +1
o En utilisant la fonction standard on donne à val (valeur recherchée) des valeurs aléatoires
//RANDOM
3.2.5.2 L’algorithme
ALGORITHME TP2
DEBUT
Tri_panier (50000, X)
DPOUR
j ← Random (30000)
D’itérations : ’, iter)
FPOUR
DPOUR
j ← Random (30000)
d’itérations : ’, iter)
FPOUR
FIN
3.2.5.3 Le déroulement
Par la recherche dichotomique :
3.2.5.4 Le programme
4 Conclusion
Sur l’échelle pédagogique, psychologique :
Il nous enseigne aussi comment contrôler le temps (La gestion de temps) et comment se partager les tâches.
L’algorithme tri par paniers est simple ainsi qu’il est peu efficace à cause de sa complexité, notamment le
coût d’opérations (nombre d’itérations).
D’autre part, on constate que l’algorithme de la recherche dichotomique est beaucoup plus important que
celui de la recherche séquentielle par la mesure de la complexité des algorithmes d’où l’efficacité.
Egalement une propriété importante de la recherche dichotomique car ne s’applique que sur une collection
d’objets (tableau) triés vu la cohérence et l’enchainement de son principe en effet on procède par élimination
contrairement à la recherche séquentielle qui s’applique sur un tableau quelconque.