Beruflich Dokumente
Kultur Dokumente
Le problme du tri:
Le "tri" est l'opration qui consiste ordonner un ensemble d'lments.
Algorithme tri:
Entre: Un tableau dentiers de taille N
Sortie: Le mme tableau, tri par ordre croissant
Le tri insertion:
Principe : Cette mthode de tri est identique celle utilise pour trier ses
cartes dans un jeu : on prend une carte, puis la deuxime que l'on place
aprs l'avoir compar avec la premire, ensuite la troisime que l'on
insre sa place en fonction des deux premires et ainsi de suite.
Le principe gnral est donc de considrer que les (i-1) premires cartes, sont
tries et de placer la i me carte, sa place parmi les (i-1) dj tries, et
ce jusqu ce que i = N
Calcul de la complexit:
Au meilleur des cas : O(n)
Au pire des cas : O(n2)
Remarque:
L'fficacit du tri par insertion est meilleure si le tableau possde dj un certain ordre,
Recherche dichotomique
La recherche dans un tableau est une opration de base utilse dans plusieurs
algorithmes .
Principe:
Il s'agit de trouver dans un tableau l'indice correspondant une valeur donne. Le
principe de recherche dichotomique ne s'applique que pour des tableaux tris.
Soit X l'lment recherch dans un tableau T dont les bornes infrieure et suprieure
sont indiceInf et indiceSup. On appelle milieu (indiceInf + indiceSup) Div 2.
Principe de la recherche de l'indice X :
Si T[milieu] > X, alors l'indice de X, s'il existe, est compris entre indiceInf et milieu-1
Si T[milieu] = X, l'indice est trouv.
Si T[milieu] < X, alors l'indicede X, s'il existe, est compris entre milieu+1 et indiceSup
Recherche dichotomique
Recherche dichotomique
Complexit:
Le pire des cas pour la recherche d'un lment est de continuer les divisions jusqu
obtenir un tableau de taille 1.
La complexit = log2(n)
Le Tri-slection
Principe:
Pour classer n lments, on parcourt le tableau pour rechercher le plus petit
lment que l'on permute alors avec le premier lment.
Le mme traitement est effectu avec le tableau ayant le premier lment en
moins.
Cette opration est rpte jusqu' ce que tous les lments soient classs.
Le Tri-slection
Exemple:
Soit le tableau d'entiers suivant :
6
2 8 1 5 3 7 9 4 0
L'lment le plus petit se trouve en 9me position
6
2 8 1 5 3 7 9 4 0
On change l'lment le plus petit (en 9me position) avec le premier :
0
2 8 1 5 3 7 9 4 6
Le premier lment du tableau est dsormais forcment le plus petit. On continue donc
en considrant le mme tableau, en ignorant son premier lment :
0
2 8 1 5 3 7 9 4 6
Toute l'astuce de l'algorithme est l : on ignore volontairement dans la suite du
traitement les lments que l'on a dplacs au dbut du tableau.
De mme, on repre l'lment le plus petit en ignorant le premeir et on l'change avec
le deuxime :
0
1 8 2 5 3 7 9 4 6
0
1 2 3 4
le tableau est tri !
0351426
0351426
0351426
0315426
0314526
0314256
// On compare 0 et 3 : on laisse
// On compare 3 et 5 : on laisse
// On compare 5 et 1 : on inverse
// On compare 5 et 4 : on inverse
// On compare 5 et 2 : on inverse
// Nous avons termin la 2ime itration
Complexit algorithmique
Complexit algorithmique
Exemple:
Prenons la squence suivante :[11,4,27,17,32,5,12,6]
1-Opration de dcoupage:
[11,4,27,17]
[32,5,12,6]
[11,4] [27,17]
[32,5]
[12,6]
[11][4] [27][17]
[32][5]
[12] [6]
Donc on obtient aprs partition la liste suivante:
2- Opration de fusion:
On va fusionner les listes 2 2, ce qui va nous donner 4 sous-listes
Algorithme:
Fonction tri_fusion (T, deb, fin) : tableau entier
variables
tableau T1,T2:entier ;
Milieu :entier;
Dbut
Si (deb = fin) alors Retourner T ;
Sinon milieu (deb + fin) DIV 2;
T1 tri_fusion (T, deb, milieu) ;
T2 tri_fusion (T, milieu+1, fin)) ;
Retourner fusion (T1, T2) ;
Fin si
FIN
Algorithme:
Fonction tri_fusion (T, deb, fin) : tableau entier
variables
tableau T1,T2:entier ;
Milieu :entier;
Dbut
Si (deb = fin) alors Retourner T ;
Sinon milieu (deb + fin) DIV 2;
T1 tri_fusion (T, deb, milieu) ;
T2 tri_fusion (T, milieu+1, fin) ;
Retourner fusion (T1, T2) ;
Fin si
FIN
Calcul Complexit:
Le meilleur des cas:
T(n) = 2 T(n/2)+(n+1)
D'o
T(n) =O(nlog2n)
Le pire des cas:
T(n) = T(n-1)+(n+1)
D'o
T(n) =O(n2)
Complexit en moyenne:
T(n)= Moyenne0<=indicepivot<=n-1(T(indicepivot)+T(n-1-indicepivot))
D'o
T(n) =O(nlog2n)