Sunteți pe pagina 1din 18

Différents types de tri

1
Plan

• Tri par Sélection

• Tri à Bulles

• Tri par Insertion

• Recherche dichotomique

2
Tri par Sélection
n =4 8 2 10 1

for (i=0;i<n-1;i++) Etape 1:


{
min=i ; i= 0; min =0;
Etape 1: Etape 2: Etape 3:
/* min recherche */
for (j=i+1;j<n;j++) J= 1; J= 2; J= 3;
{ if (T[j]<T[min]) 8 2 10 1 8 2 10 1 8 2 10 1
min=j;}

tampon=T[i]; T[min] T[j]


T[min] T[j] T[min] T[j]
T[i]=T[min];
T[min]=tampon; min = 1 min = 1 min = 3
}

1 2 10 8
n =4 1 2 10 8

for (i=0;i<n-1;i++) Etape 2:


{
min=i ; i= 1; min =1;
/* min recherche */ Etape 1: Etape 2:
for (j=i+1;j<n;j++) J= 2; J= 3;
if (T[j]<T[min]) 1 2 10 8 1 2 10 8
min=j;

tampon=T[i];
T[min] T[j] T[min] T[j]
T[i]=T[min];
T[min]=tampon; min = 1 min = 1
}

1 2 10 8
n =4 1 2 10 8

for (i=0;i<n-1;i++) Etape 3:


{
min=i ; i= 2; min =2;
/* min recherche */ Etape 1:
for (j=i+1;j<n;j++) J= 3;
if (T[j]<T[min]) 1 2 10 8
min=j;

tampon=T[i];
T[min] T[j]
T[i]=T[min];
T[min]=tampon; min = 3
}

1 2 8 10
Tri à Bulles
n =4 8 2 10 1

for (i=n-1;i>0;i--) Etape 1:


{
for (j=1;j<=i;j++) i= 3;
Etape 1: Etape 2: Etape 3:
if (T[j-1]>T[j])
{ J= 1; J= 2; J= 3;
tampon=T[j-1]; 8 2 10 1 2 8 10 1 2 8 10 1
T[j-1]=T[j];
T[j]=tampon;
} T[j-1] T[j]
T[J-1] T[j] T[j-1] T[j]
}

2 8 10 1 2 8 10 1 2 8 1 10

2 8 1 10
n =4 2 8 1 10

for (i=n-1;i>0;i--) Etape 2:


{
for (j=1;j<=i;j++) i= 2;
if (T[j-1]>T[j]) Etape 1: Etape 2:
{ J= 1; J= 2;
tampon=T[j-1]; 2 8 1 10 2 8 1 10
T[j-1]=T[j];
T[j]=tampon;
}
T[J-1] T[j] T[j-1] T[j]
}

2 8 1 10 2 1 8 10

2 1 8 10
n =4 2 1 8 10

for (i=n-1;i>0;i--) Etape 3:


{
for (j=1;j<=i;j++) i= 1;
if (T[j-1]>T[j]) Etape 1:
{ J= 1;
tampon=T[j-1]; 2 1 8 10
T[j-1]=T[j];
T[j]=tampon;
}
T[J-1] T[j]
}

1 2 8 10
Tri par Insertion
n =4 8 2 10 1

for (i=1;i<n;i++) Etape 1:


{
elem = T[i]; i= 1; elem = 2
j=i; J=1
while(j>0 && (T[j-1]>elem)) Etape 1:
{ J= 1;
T[j]= T[j-1];
8 2 10 1
j--;
}
T[j]=elem; T[j]
} T[J-1]
8 8 10 1
J=0

2 8 10 1
n =4 2 8 10 1

for (i=1;i<n;i++) Etape 2:


{
elem = T[i]; i= 2; elem = 10
j=i; J=2
while(j>0 && (T[j-1]>elem)) Etape 1:
{ J= 2;
T[j]= T[j-1];
2 8 10 1
j--;
}
T[j]=elem;
T[J-1] T[j]
}

2 8 10 1
n =4 2 8 10 1

for (i=1;i<n;i++) Etape 3:


{
elem = T[i]; i= 3; elem = 1
j=i; J=3
while(j>0 && (T[j-1]>elem)) Etape 1: Etape 2: Etape 3:
{ J= 3; J= 2; J= 1;
T[j]= T[j-1];
2 8 10 1 2 8 10 10 2 8 10 10
j--;
}
T[j]=elem; T[J-1] T[j] T[J-1] > 1 T[J-1] > 1
}
2 8 10 10 2 8 8 10 2 2 8 10
J=2 J=1 J=0

1 2 8 10
La recherche dichotomique
Principe : diviser par 2 le nombre d'éléments dans lesquels on cherche la valeur x à chaque
étape de la recherche.
Pour cela on compare x avec T[milieu] :
• Si x < T[milieu], il suffit de chercher x dans la 1ère moitié du tableau.
entre (T[0] et T[milieu-1]).
Recherche dichotomique

• Si x > T[milieu], il suffit de chercher x dans la 2ème moitié du tableau.


entre (T[milieu+1] et T[N-1]).
• On continue le découpage jusqu’à un sous tableau de taille 1

16
17
Algorithme: 3 7 9 12 15 17 27 29 37
Recherche dichotomique
while ((trouve==-1)&&(d<=f)) val= 16

{ Inf 0 5 5 6

m=(d+f)/2; Sup 8 8 5 5
if (T[m]>v)
mil 4 6 5
f=m-1;
else if (T[m]<v)
d=m+1;
else val=9
inf 0 0 2
trouve=1; sup 8 3 3
} mil 4 1 2

18

S-ar putea să vă placă și