LYCEE

PROFESSEUR :

Chapitre N° 6

les traitements avances

I) Tri d'un tableau:
1. introduction:
Le tri consiste à ordonner dans un ordre bien déterminé (croissant ou décroissant) les éléments d’un tableau. Il existe plusieurs méthodes de tri. Dans la suite on vous en présente 3 : tri par sélection, tri à bulles et tri par insertion. Enoncé : On se propose de remplir un tableau T de n éléments (1<n<20) par des entiers, le trier et l’afficher. Exemple n= 4 T 15 0 10 50 ………….. T 0 10 15 50 …………..

2. tri par sélection:
Principe : 1) On commence à parcourir le tableau à partir du premier élément pour chercher l’indice de ce minimum. Ce dernier peut se répéter plusieurs fois, on décide de choisir le premier ou le dernier). 2) On compare ce minimum avec T [1] ; s’ils ne sont pas dans le bon ordre, on les permute. Après cette opération, il est sur que T [1] contient la plus petite valeur. 3) Le sous tableau de T allant de 2 à n est non trié, on répète les étapes 1) et 2) et ainsi de suite jusqu’à l’avant dernier élément (n-1). Analyse du programme principal Tableau de déclaration de NOM : TRI_TABLEAU nouveaux types S L.D.E O.U Type 4 Résultat = PROC AFFICHE (N, T) AFFICHE TAB = tableau de Nmax entiers. N Tableau de déclaration des objets 1 N = PROC LECTURE (N) T Objet Nature / Type 3 T = PROC TRI_SELECTION (N, T) LECTURE AFFICHE Procédure TRI_SELECTION 2 T = PROC REMPLIR (N, T) N Variable/entier T T TAB 5 FIN TRI_TABLEAU REMPLIR LECTURE Procédure Algorithme du programme principal TRI_SELECTION Procédure 0/ Début TRI_TABLEAU REMPLIR Procédure 1/ PROC LECTURE (N) Nmax Constante =19 2/ PROC REMPLIR (N, T) 3/ PROC TRI_SELECTION (N, T) 4/ PROC AFFICHE (N, T)

5/ Fin TRI_TABLEAU

Page 1 / 9

Analyse de la procédure LECTURE DEF PROC LECTURE (var N : entier) S 1 2 L.D.E Résultat = N N = Répéter N = donnée ("Donner le nombre d’éléments") Jusqu’à (N dans [2.. Nmax]) FIN LECTURE O.U

Algorithme de la procédure lecture 0/ DEF PROC LECTURE (var N : entier) 1/ Répéter Ecrire (" Donner le nombre d’éléments") Lire (N) Jusqu’à (N dans [2.. Nmax])

2/ FIN LECTURE

Analyse de la procédure REMPLIR DEF PROC REMPLIR (N : entier ; VAR T : TAB) S L.D.E O.U Résultat = T i 1 T =[] Pour i de 1 à N faire T[i] = donnée ("T[",i, "]=") Fin Pour 2 FIN REMPLIR Tableau de déclaration des objets locaux Objet Nature / Type i Compteur / Entier

Algorithme de la procédure remplir 0/ DEF PROC REMPLIR (N : entier ; VAR T :TAB ) 1/ Pour i de 1 à N faire Ecrire ("T[",i, "]=") Lire (T[i]) Fin pour 2/ FIN REMPLIR

Analyse de la procédure TRI_SELECTION DEF PROC TRI_SELECTION (N : entier ; VAR T : TAB ) S L.D.E O.U Résultat = T T = Pour i de 1 à N-1 faire i 1 ppm ppm  FN PREMPOSMIN (i,N,T) PREMPOSMIN Si T[ppm] ≠T[i] alors PERMUT PROC PERMUT (T[ppm],T[i]) Finsi 2 Fin Pour FIN TRI_SELECTION Tableau de déclaration des objets locaux Objet Nature / Type i Compteur/Entier ppm Variable/Entier PREMPOSMIN Fonction PERMUT Procédure

Algorithme de la procédure tri_selection 0/ DEF PROC TRI_SELECTION (N : entier ; VAR T : TAB) 1/ Pour i de 1 à N faire ppm  FN PREMPOSMIN (i,N,T) Si T[ppm] ≠T[i] alors PROC PERMUT (T[ppm],T[i]) Finsi Fin Pour 2/ FIN TRI_SELECTION

Page 2 / 9

Analyse de la fonction PREMPOSMIN DEF FN PREMPOSMIN (d, f : entier ; T : TAB) : entier L.D.E Résultat = PREMPOSMIN 2 PREMPOSMIN  posmin 1 posmin= [posmind] Pour j de d+1 à f faire Si T[j] <T[posmin] alors Posminj Finsi 3 Fin Pour FIN PREMPOSMIN Tableau de déclaration des objets locaux Objet Nature / Type posmin Entier j Compteur/entier Analyse de la procédure PERMUT DEF PROC PERMUT (VAR X,Y : entier ) S L.D.E O.U Résultat = X,Y int 2 intX 3 XY 1 Yint 4 FIN PERMUT S O.U posmin j

ALGORITHME

DE

LE

FONCTION PREMPOSMIN 0/ DEF FN PREMPOSMIN (d, f : entier ; T :TAB ) : entier 1/ [posmind] Pour j de d+1 à f faire Si T[j] <T[posmin] alors Posminj Finsi Fin Pour 2/ PREMPOSMIN posmin 3/ FIN PREMPOSMIN

Tableau de déclaration des objets locaux Objet Nature / Type int Variable /Entier ALGORITHME DE LA PROCÉDURE PERMUT 0/ DEF PROC PERMUT (VAR X,Y : entier ) 1/ intX 2/ XY 3/ Y int

4/ FIN PERMUT
Analyse de la procédure AFFICHE DEF PROC AFFICHE (N : entier ; T : TAB ) S 1 2 L.D.E Résultat = T T = Pour i de 1 à N faire Ecrire (" T[ ",i,"]= ", T[i]) Fin Pour FIN AFFICHE O.U i Tableau de déclaration des objets locaux Objet Nature / Type i Compteur/ entier ALGORITHME DE LA PROCÉDURE AFFICHE 0/ DEF PROC AFFCICHE ( N : entier ; T :TAB ) 1/ Pour i de 1 à N faire Ecrire (" T[ ",i,"]= ", T[i]) Fin Pour

2/ FIN AFFICHE

3. tri à bulles:
Principe : 1) On parcourt le tableau en comparant toute paire d’éléments consécutifs (ai-1, ai) non ordonnés. Ainsi après le premier parcours, l’élément maximum se retrouve en position n. On suppose que l’ordre s’écrit de gauche à droite (à gauche le plus petit élément, à droite le plus grand élément). 2) On répète l’opération avec le nouveau sous tableau non trié (a1, a2,…, an-1), et ainsi de suite jusqu’à terminer tous les sous tableaux (le dernier est un couple).

Page 3 / 9

Analyse de la procédure TRI_BULLES DEF PROC TRI_BULLES (N : entier ; VAR T : TAB) S L.D.E O.U Résultat = T i T = [] Pour i de N à 1 faire j 1 [] Pour j de 2 à i faire PERMUT [] Si T [j-1] >T[j] alors PROC PERMUT (T [j-1], T[j]) Finsi FinPour Fin Pour FIN TRI_BULLES 2 Tableau de déclaration des objets locaux Objet Nature / Type i Compteur/Entier j Compteur/Entier PERMUT Procédure

Le nom de tri à bulles vient donc de ce qu’à la fin de chaque itération interne (2ème boucle), les plus grands nombres de chaque sous tableau se déplacent vers la droite successivement comme des bulles de la gauche vers la droite. NB : les procédures lecture, remplir, permut et affiche sont les mêmes.

Algorithme de la procédure tri__BULLES 0/ DEF PROC TRI_BULLES ( N : entier ; VAR T :TAB ) 1/ []Pour i de N à 1 faire [] Pour j de 2 à i faire []Si T[j-1] >T[j] alors PROC PERMUT (T[j-1],T[j]) Finsi FinPour Fin Pour

2/ FIN TRI_BULLES

4. tri par insertion:
Principe : a) c) Commencer avec le 2ème élément. b) Comparer l'élément choisi avec tous ses précédents dans la liste et l'insérer dans sa bonne place pour que ces éléments soient rangés. Répéter les étapes 1 et 2 jusqu'a arriver au dernier nombre. La liste sera triée en ordre croissant NB : les procédures lecture, remplir, permut et affiche sont les mêmes
Analyse de la procédure TRI_INSERTION DEF PROC TRI_INSERTION (N:entier, VAR T:TAB) L.D.E

S 1

O.U

2

Résultat: T T=[] Pour i de 2 à N faire [j <-1;B<-Vrai]TantQue j < i et (B) faire si T[i]<T[j] alors B<-faux X<-T[i] Pour k décroissant de i à j+1 faire T[k] <-T[k-1] FinPour T[j] <- X Sinon j<-j+1 FinSi
Page 4 / 9

i j k B X

3

FinTantque FinPour FIN TRI_INSERTION.

Tableau de déclaration des objets locaux: Objet i j k B X Nature / Type Entier Entier Entier Booléen entier

Algorithme de la procédure INSERTION

0)DEF PROC INSERTION (N:ENTIER; T:TAB) 1)Pour i de 2 à N Répéter j <-1 B <- Vrai TantQue j < i et (B=vrai) faire si T[i]<T[j] alors B <-faux X <-T[i] Pour k décroissant de i à j+1 Répéter T[k] <- T[k-1] FinPour T[j] <- X Sinon j <- j+1 FinSi FinTantque FinPour 2) FIN INSERTION.

II)Recherche d'un élément dans un tableau:
1. recherche séquentielle:
Cette méthode de recherche consiste à parcourir les éléments du tableau un par un jusqu'à trouver la valeur cherchée ou arriver à la fin du tableau
Analyse du programme principal NOM : Recherche_Seq S L.D.E 4 Résultat = PROC AFFICHE (Verif) 3 Verif ← Recherche (T, N, K) 2 Saisie (T, N, K) 1 FIN Recherche_Seq

O.U AFFICHE N T Saisie K recherhce

Page 5 / 9

Tableau de déclaration des Objets Objets T N, K Saisie, Affiche Recherche Type/Nature TAB Entier Procédure Fonction

Tableau de déclaration des nouveaux types Types TAB = Tableau de 100 entiers

Algorithme du programme principal 0) Début Recherche_Seq 1) Saisie (T, N, K) 2) Verif ← Recherche (T, N, K) 3) Affiche (Verif) 4) Fin Recherche_Seq Analyse de la procédure Saisie: DEF PROC Saisie (VAR Tf : TAB ; VAR Nf, Kf : Entier) L.D.E O.U Résultat = (Tf,Nf,Kf) i Nf=[ ]répéter Nf=donnée ("Donner la taille du tableau : ") Jusqu'à (Nf dans [1..100]) Tf=[ ] pour i de 1 à Nf Faire Tf=donnée ("Donner l’élément N°", i, ": ") Fin pour Kf=donnée ("Donner la valeur a cherchée : ") Fin saisie

S 4 1 2 3 5

Tableau de déclaration des Objets locaux Objet s i Type/Natur e Entier

Algorithme de la procédure saisie: 0) Début procédure Saisie (VAR Tf : TAB ; VAR Nf, Kf : Entier) 1) Répéter Ecrire ("Donner la taille du tableau : "), Lire (Nf) Jusqu'à (Nf dans [1..100]) 2) Pour i de 1 à Nf Faire Ecrire ("Donner l’élément N°", i, ": "), Lire (Tf[i]) Fin Pour 3) Ecrire ("Donner la valeur a cherchée : "), Lire (Kf) 4) Fin Saisie Analyse de la fonction recherhce: DEF FN recherhce (Tf : TAB ; Nf, Kf : Entier):entier S L.D.E O.U 3 Résultat = recherche i 2 recherche←Trouve Trouve 1 Trouve= [Trouve←-1, i←1] Répéter Si Tf[i] = Kf Alors Trouve ← i Sinon i ← i+1 Finsi Jusqu’à (Trouve <>-1) OU (i > Nf) 4 Fin recherche Page 6 / 9

Tableau de déclaration des Objets locaux Objet s i Trouve Type/Natur e Entier Entier

Algorithme de la fonction Recherche : 0) Début fonction recherche (Tf : TAB ; Nf, Kf : Entier) : Booléen 1) [Trouve ← -1, i ← 1] Répéter Si Tf[i] = Kf Alors Trouve ← i Sinon i ← i+1 Finsi Jusqu’à (Trouve <>-1) OU (i > Nf) 2) Recherche ← Trouve 3) Fin Recherche Analyse de la procédure Affiche: DEF PROC Affiche(Veriff:entier) S L.D.E 2 Résultat = écrire (msg) 1 msg=[msg←(K," n’existe pas dans le tableau")]si (veriff<>-1) alors msg←(K," existe dans le tableau à l'indice",veriff) fin si 3 fin Affiche Algorithme de la procédure Affiche : 0) Début procédure Affiche (Veriff : Booléen) 1) msg←(K," n’existe pas dans le tableau") 2) Si Veriff = vrai Alors Ecrire (K," existe dans le tableau à l'indice",Veriff) Finsi 3) Fin Affiche

O.U

2. recherche dichotomique:

La méthode ne s'applique que lorsque le tableau est trié
Cette méthode de recherche consiste à : 1. Fixer le début (Deb) et la fin (Fin) du tableau, 2. Fixer le milieu du tableau (Mil = (Fin + Deb) Div 2), 3. Comparer K et T[Mil], Si (K > T[Mil]) alors rechercher K dans le sous tableau [Mil + 1 … Fin] sinon si (K < T[Mil]) alors dans le tableau [Deb … Mil - 1], 4. Répéter les étapes 1, 2 et 3 jusqu’à (K = T[Mil]) ou (Deb > Fin)

a)Principe :

b)Exemple :
Soit un tableau T contenant les dix éléments suivants : T: -5
1

-2
2

-1
3

0
4

2
5

8
6

10
7

12
8

12
9

40
10

Pour K = -2 le programme affichera "-2 existe dans le tableau" Pour K = 5 le programme affichera "5 n’existe pas dans le tableau"
Analyse du programme principal: NOM : Recherche_Dicho S L.D.E Page 7 / 9

c)Analyse:

O.U

4 3 2 1

Résultat = PROC AFFICHE (Verif) Verif ← Recherche (T, N, K) Saisie (T, N, K) FIN Recherche_Seq

AFFICHE N T Saisie K recherhce

Tableau de déclaration des Objets
Algorithme du programme principal : Objets Type/Nature

Tableau de déclaration des nouveaux types Types TAB = Tableau de 100 entiers

0) Début Recherche_Dicho TAB T 1) Saisie (T, N, K) N, K Entier 2) Verif ← Recherche (T, N, K) Saisie, Affiche Procédure 3) Recherche Affiche (Verif) Fonction 4) Fin Recherche_ Dicho

S 3 2 1

4

Analyse de la fonction Recherche: DEF FN recherhce (Tf : TAB ; Nf, Kf : Entier):entier L.D.E Résultat = recherche recherche←Trouve Trouve= [Trouve←-1, Deb←1,Fin←Nf] Répéter Mil← (Deb + Fin) Div 2 Si Tf[Mil] > Kf Alors Fin ← Mil - 1 Sinon Si Tf[Mil] < Kf Alors Deb ← Mil + 1 Sinon Trouve ← Mil Finsi Jusqu’à (Trouve<>-1) OU (Deb > Fin) Fin recherche

O.U

i Deb Fin Trouve

Algorithme de la fonction Recherche :

0) Début fonction recherche (Tf : TAB ; Nf, Kf : Entier) : entier 1) [Trouve ← -1, Deb ← 1, Fin ← Nf] Répéter Mil ← (Deb + Fin) Div 2 Tableau de déclaration Si Tf[Mil] > Kf Alors des Objets locaux Fin ← Mil - 1 Sinon Objets Type/Nature Si Tf[Mil] < Kf Alors i, Deb, Fin Entier Deb ← Mil + 1 Trouve Sinon Trouve ← i Finsi Jusqu’à (Trouve <>-1) OU (Deb > Fin) 2) Recherche ← Touve
Page 8 / 9

3) Fin Recherche

Page 9 / 9