Académique Documents
Professionnel Documents
Culture Documents
recherche
Dfinition : un algorithme de tri est un algorithme qui permet d'organiser une collection
d'objet selon un ordre dtermin (l'alphabet des noms, l'ordre des valeurs entires, ).
Dans ce chapitre nous allons dcouvrir trois algorithmes de tri :
Tri par slection
Tri bulles
Tri par insertion
Activit : Ecrire une analyse et un algorithme dun sous programme qui permet de
trier (classer) les lments du tableau T dans l'ordre croissant.
1
DEF FN Pos_min (T : tab ; n, i : entier) : entier 0) DEF FN Pos_min (T : tab ; n, i : entier) : entier
Rsultat =[..] 1) Min <---- i
Min <---- i 2) Pour j de i+1 n faire
Pour j de i+1 n faire si T[j] < T[Min] alors
si T[j] < T[Min] alors Min <----- j
Min <----- j Finsi
Finsi Fin pour
Fin pour 3) Pos_min <---- Min
Pos_min <---- Min 4) Fin Pos_min
T.D.O
Objet Type/Nature
Min, i, j Entier
Objet Type/Nature
temp Entier
2) Tri bulles
a) Principe : le tri bulles consist faire remonter le plus grand lment du tableau
en comparant les lments successifs. Cest--dire quon va comparer le 1er et le 2ime
lment du tableau, sils ne sont pas dans le bon ordre, on les permute, on passe ensuite au
2ime et 3ime, puis au 3ime et 4ime et ainsi de suite jusquau (n-1)ime et le nime
lments.
A la fin du premier parcours, on aura pouss le plus grand lment du tableau vers sa place
finale qui est le nime lment du tableau. On recommence cette opration en parcourant de 1
n-1 puis de 1 n-2 et ainsi de suite.
On arrte quand la partie trier est rduite un seul lment ou que le tableau est devenu tri
et dans ce cas on doit avoir un indicateur qui donne cette information. En effet, lide est de
vrifier si lors du dernier parcours aucune permutation na t faite ce qui signifie le tableau
est devenu tri.
2
b) Solution de lactivit
Analyse et Algorithme de la procdure tri__bulle
DEF Proc Tri__bulle (var T : tab ; n : 0) DEF Proc Tri__bulle (var T : tab ; n :
entier) entier)
Rpter 1) Rpter
echange <---- faux echange <---- faux
Pour i de 1 n-1 faire Pour i de 1 n-1 faire
Si (T[i] > T[i+1]) alors Si (T[i] > T[i+1]) alors
Proc permuter (T[i], T[i+1]) Proc permuter (T[i], T[i+1])
echange <---- vrai echange <---- vrai
Fin si Fin si
Fin pour Fin pour
n <---- n-1 n <---- n-1
Jusqu (n = 1) ou (echange = faux) Jusqu (n = 1) ou (echange = faux)
2) Fin tri__bulle
T.D.O
Objet Type/Nature
i Entier
Permuter Procdure
echange Fonction
a) Principe : c'est le tri qu'on l'utilise lorsqu'on a des dossiers classer. On prend un
dossier et on le met sa place parmi les dossiers dj tris, puis on recommence avec le
dossier suivant et ainsi de suite.
Le principe est le suivant :
On suppose que les lments de 1 (i-1) du tableau sont tris et on place (on insre) l'lment
ni sa bonne place parmi les (i-1) dj tris.
1) Pour chaque lment n i insrer :
Utiliser une variable intermdiaire "temp" pour conserver la valeur insrer.
Dplacer les lments (T[i-1], T[i-2], .) vers la droite tant que la valeur
insrer est suprieure celle de "temp".
Affecter la variable "temp" la case laiss libre (vide) aprs le dcalage.
2) Rpter l'action 1 jusqu' atteindre la fin du tableau.
b) Solution de lactivit
Analyse et Algorithme de la procdure tri_par_insertion
3
DEF Proc Tri_par_insertion (var T : tab ; 0) DEF Proc Tri_par_insertion (var T : tab ; n :
n : entier) entier)
Pour i de 2 n faire 1) Pour i de 2 n faire
Si T[i-1]>T[i] alors Si T[i-1]>T[i] alors
temp <---- T[i] temp <---- T[i]
Proc Dcaler (T, i, temp, p) Proc Dcaler (T, i, temp, p)
T[p] <----- temp T[p] <----- temp
Finsi Finsi
Fin pour Fin pour
2) Fin Tri_insertion
T.D.O
Objet Type/Nature
i , temp, p Entier
Dcaler Procdure
Analyse :
Rsultat = crire ("la valeur ", exist)
exist <----- FN recherche (T,n,v)Tableau de dclaration des nouveaux types
Proc remplir (T,n)
Types
V = donne ("saisir la valeur chercher ") Tab = Tableau de [1..30] dentier
Algorithme Tableau de dclaration des objets :
5) Fin recherche_lment
Remarque : il existe deux mthodes de rechercher :
La recherche squentielle
La recherche dichotomique.
1) La recherche squentielle :
a) Principe : La mthode de recherche squentielle dun lment dans un tableau consiste
parcourir le tableau lment par lment en le comparant avec llment chercher jusqu trouve
ce dernier ou atteindre la fin du tableau.
b) Analyse et algorithme de la fonction recherche
5
Analyse :
Rsultat = [..]
Si T[i]= v alors
recherche <----- "existe"
Sinon
recherche <----- "nexiste pas"
Fin si
i<---- 0
Rpter
i <----- i+1
Jusqu (T[i]=v) ou (i=n)
Algorithme
0) DEF FN recherche (T :tab ;n,v :entier) : chane de caractre
1) i 0 rpter
i i+1
Jusqu (T[i]=v) ou (i=n)
Tableau de dclaration des objets :
2) si T[i] = v alors
recherche <----- "existe" Objet Type/Nature
i Entier
Sinon
recherche <----- "nexiste pas"
Fin si
5) Fin recherche
2) La recherche dichotomique :
a) Principe :
1) Initialiser les indices des bornes dbut 1 et fin n
2) Diviser les lments du tableau en deux parties (gauche et droite).
3) Vrifier quelle partie appartient l'lment recherch : s'il appartient la partie gauche alors
cette partie sera l'intervalle de recherche donc modifier l'indice de la borne droite (fin milieu
-1). Sinon la partie droite sera lintervalle de recherche et donc modifier l'indice de la borne
gauche (dbut milieu+1).
Rpter les tapes 1) et 2) jusqu' soit trouver l'lment recherch ou bien l'indice de la borne
gauche sera > celui de la borne droite.
6
Analyse :
Rsultat = [..]
Si T[p]= v alors
recherche <----- "existe"
Sinon
recherche <----- "nexiste pas"
[debut <---- 1, fin <---- n]
Rpter
p <----- (debut + fin) div 2
si v < T[p] alors
fin <----- p - 1
Sinon
debut <----- p + 1
Fin si
Jusqu (T[p]=v) ou (debut > fin)
Algorithme
0) DEF FN recherche (T :tab ;n,v :entier) : chane de caractre
1) [debut <---- 1, fin <---- n]
Rpter
p <----- (debut + fin) div 2
si v < T[p] alors Tableau de dclaration des objets :
fin <----- p - 1 Objet Type/Nature
Sinon p Entier
debut <----- p + 1
Fin si
Jusqu (T[p]=v) ou (debut > fin)
2) si T[p] = v alors
recherche <----- "existe"
Sinon
recherche <----- "nexiste pas"
Fin si
5) Fin recherche
III) Applications:
On dispose dun tableau ABONNE de noms ainsi quun tableau TEL