SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Chapitre 3
Les algorithmes de recherche et de tris
Module 20: Informatique 3 Algorithmique et programmation C
2´eme ANNEE LICENCE D’ENSEIGNEMENT DE MATHEMATIQUES (LEM)
2´eme ANNEE LICENCE CRYPTO MATHEMATIQUE ET SECURITE DE L’INFORMATION (LCMSI)
Texte
Texte
Texte
mlahby@gmail.com
7 novembre 2016
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 1/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Plan
1 Les algorithmes de recherche
Recherche s´equentielle
Recherche dichotomique dans un tableau tri´e
2 Les algorithmes de tris classiques
Tri par s´election
Tri par bulle
Tri par insertion
3 Les algorithmes de tris rapides
Tri rapide
Tri fusion
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 2/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Recherche s´equentielle
Recherche dichotomique dans un tableau tri´e
Recherche s´equentielle
Principe de l’algorithme
On cherche `a d´eterminer si un tableau contient une certaine
valeur.
On parcours le tableau ´el´ement par ´el´ement, et on interrompre
le parcours d`es que l’´el´ement est trouv´e.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 3/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Recherche s´equentielle
Recherche dichotomique dans un tableau tri´e
Recherche s´equentielle
Solution 1
int Recherche Seq(int T[],int N, int x)
{int i=0 ;
while (i<N and T[i] !=x)
{i=i+1 ;
}
if (i<N)
return 1 ;
else
return 0 ;
}
Solution 2
int Recherche Seq(int T[],int N, int x)
{int i=0 ;
for (i=0 ;i < N ;i++)
if (T[i]==x)
return 1 ;
return 0 ;
}
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 4/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Recherche s´equentielle
Recherche dichotomique dans un tableau tri´e
Recherche s´equentielle
Complexit´e
la complexit´e est O(n)
Inconv´enient
Cet algorithme est d´econseill´e pour les tableaux tri´es.
Un dictionnaire contient de l’ordre de 105 mots
Si un test prend 0,01s, une recherche compl`ete prendrait plus
de un 1minute 30 s.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 5/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Recherche s´equentielle
Recherche dichotomique dans un tableau tri´e
Recherche dichotomique dans un tableau tri´e
Principe de l’algorithme
la recherche d’un ´el´ement dans un tableau avec la m´ethode de
dichotomique requiert un tableau tri´e.
On on coupe le tableau en deux par le milieu et on d´etermine
si la valeur x doit ˆetre recherch´ee dans la moiti´e gauche ou
droite
En effet, il suffit pour cela de la comparer avec la valeur
centrale.
Puis, on r´ep`ete le processus sur la portion s´electionn´ee.
.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 6/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Recherche s´equentielle
Recherche dichotomique dans un tableau tri´e
Recherche dichotomique dans un tableau tri´e
D´efinition de la fonction
int RechDichotomique(int T[],int N, int x)
{int g, d, m ;
g=0 ;
d=N-1 ;
while(g<=d)
{ m=(g+d)/2 ;
if (T[m]==x)
return 1 ;
if (T[m]<x)
g=m+1 ;
else
d=m-1 ;
}
return 0 ;
}
Complexit´e
la complexit´e de la recherche dichotomique est O(log(n))
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 7/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri par s´election
Tri par bulle
Tri par insertion
Tri par s´election
Principe
Le tri par s´election consiste `a chercher la plus petite valeur de la liste, puis de la
mettre `a la derni`ere place en l’´echangeant avec la premi`ere valeur. On r´eit`ere alors le
proc´ed´e sur la liste restreinte aux nombres restants et cela jusqu’`a obtenir la liste tri´ee.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 8/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri par s´election
Tri par bulle
Tri par insertion
Tri par s´election
La fonction TriSelection(T,n)
void TriSelection(int T[],int n) :
{int i,j,Posmin,Tmp ;
for(i=0 ;i<n-1 ;i++)
{
Posmin=i ;
for(j=i+1 ;i<n ;i++){
if (T[j]<T[Posmin])
Posmin=j ;}
/*****Permutation******/
Tmp=T[i] ;
T[i]=T[Posmin] ;
T[Posmin]=Tmp ;
}
}
Complexit´e
la complexit´e est O(n2)
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 9/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri par s´election
Tri par bulle
Tri par insertion
Tri par bulle
Principe
Le principe du tri par bulle consiste `a comparer deux `a deux les ´el´ements e1 et e2
cons´ecutifs d’un tableau et d’effecteur une permutation si e1 > e2. On continue de
trier jusqu’`a ce qu’il n’y ait plus de permutation.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 10/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri par s´election
Tri par bulle
Tri par insertion
Tri par bulle
La fonction TriBulle(T,n)
void TriBulle(int T[ ],int n)
{int i,Tmp,inversion=1 ;
while (inversion)
{
inversion=0 ;
for(i=0 ;i<n-1 ;i++)
if (T[i]>T[i+1]){
/*****Permutation*****/
Tmp=T[i] ;
T[i]=T[i+1] ;
T[i+1]=Tmp ;
inversion=1 ;}
}
}
Complexit´e
la complexit´e est O(n2)
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 11/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri par s´election
Tri par bulle
Tri par insertion
Tri par insertion
Principe
Le tri par insertion consiste `a ins´erer le premier ´el´ement `a trier au premier
emplacement d’une nouvelle liste, puis on ins`ere chaque nouvel ´el´ement `a sa bonne
place dans la liste d`ej`a tri´ee. On r´eit`ere alors le proc´ed´e jusqu’`a avoir replac´e tous les
´el´ements de la liste initiale. (jeu de cartes ou un paquet de copies).
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 12/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri par s´election
Tri par bulle
Tri par insertion
Tri par insertion
La fonction TriInsertion(T,n)
void TriInsertion(int T[ ],int n)
{int i,j,Tmp ;
for(i=0 ;i<n ;i++)
{
j=i-1 ;
while (j>=0 and T[j]>T[j+1])
{
/********Permutation********/
Temp=T[j] ;
T[j]=T[j+1] ;
T[j+1]=Tmp ;
j=j-1 ;
}
}
}
Complexit´e
la complexit´e est O(n2)
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 13/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Principe de tri rapide
D´efinition
Le tri rapide (en anglais quicksort) est un algorithme de tri invent´e par C.A.R. Hoare
en 1961 et fond´e sur la m´ethode de conception diviser pour r´egner. Il est g´en´eralement
utilis´e sur des tableaux, mais peut aussi ˆetre adapt´e aux autres types de donn´ees.
Principe de fonctionnement
L’algorithme peut s’effectuer r´ecursivement :
1 Le premier ´el´ement de la liste `a trier est appel´e “pivot”.
2 On cr´ee un premier sous-enemble constitu´e des ´el´ements plus petits que le
pivot. On les place `a gauche du pivot dans l’ordre o`u ils sont dans la liste
`a trier.
3 On cr´ee de la mˆeme fa¸con un deuxi`eme sous-enemble constitu´e des
´el´ements plus grands que le pivot. On les place `a droite de celui-ci dans
l’ordre o`u ils apparaissent dans le tableau.
4 On proc`ede de mˆeme, par recursivit´e, sur les deux sous-ensembles jusqu’`a
obtenir des sous ensembles d’un seul ´el´ement.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 14/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Des exemples d’illustration
Exemple 1
On va illustrer le tri rapide sur le tableau T=[7,6,3,5,4,2,1].
On choisit comme Pivot une valeur al´eotoire du tableau T.
1. It´eration 1 : Pour trier T[0 :7], on choisit au hasard 4 comme pivot.
On place les ´el´ements plus petits que 4, puis 4, puis les autres.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 15/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Des exemples d’illustration
2. It´eration 2 : Pour trier T[0 :3], on choisit 3 comme pivot.
On place les ´el´ements plus petits que 3, puis 3, puis les autres.
3. It´eration 3 : Pour trier T[0 :2], on choisit 2 comme pivot..
On place les ´el´ements plus petits que 2, puis 2, puis les autres.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 16/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Des exemples d’illustration
4. It´eration 4 : Pour trier T[0 :3], on choisit 3 comme pivot.
On place les ´el´ements plus petits que 3, puis 3, puis les autres.
5. It´eration 5 : Pour trier T[0 :2], on choisit 2 comme pivot..
On place les ´el´ements plus petits que 2, puis 2, puis les autres.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 17/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Des exemples d’illustration
Exemple 2
On va illustrer le tri rapide sur le tableau T=[4,6,3,5,7,2,1] (Pivot=T[0]).
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 18/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Impl´ementation de l’algorithme de tri rapide
Tri rapide -Solution-
Pour impl´ementer l’algorithme tri rapide on a besoin de programmer quatre
fonctions :
1 La fonction Echange(T,i,j) pour ´echanger les ´el´ements T[i] et T[j] d’un
tableau T
2 La fonction Partition(T, premier, dernier) prend le tableau T et deux
indices premier et dernier en arguments, avec la convention que premier
est inclus et dernier exclu. On suppose qu’il y a au moins un ´el´ement dans
ce segment,
3 La fonction Tri Rapide Partition(T, premier, dernier) : qui permet de
trier une liste T en la partitionnant r´ecursivement en sous listes.
4 La fonction Tri Rapide(T) permettant de trier la liste T en uitlisant
l’algorithme tri rapide.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 19/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Impl´ementation de l’algorithme de tri rapide
La fonction Partition(T, premier, dernier)
void partition(int T[ ], int premier, int dernier)
{int gauche,droite, pivot = T[premier]
gauche = premier #On pointe gauche sur l’indice de pivot
droite = dernier
flag = 0
while (flag == 0){
while (T[droite] >= pivot and droite >= gauche){
droite = droite - 1 ;}
if (droite >= gauche){
Echange(T,gauche,droite) ;
pivot=T[droite] ;}
while (gauche <= droite and T[gauche] <= pivot){
gauche = gauche + 1 ;}
if (gauche <= droite){
Echange(T,gauche,droite) ;
pivot=T[gauche] ;}
if (droite < gauche){#condition d’arrˆet
flag = 1 ;}
}
return droite ;}
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 20/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Impl´ementation de l’algorithme de tri rapide
Tri rapide -Solution-
La fonction Echange(T,i,j)
void Echange(int T[ ],int i,int j)
.............
La fonction Tri Rapide Partition(T)
void Tri Rapide Partition(int T[ ], int premier,int dernier){
int m ;
if (premier < dernier){
m = partition(T, premier, dernier) ;
Tri Rapide Partition(T, premier, m-1) ;
Tri Rapide Partition(T, m+1, dernier) ;}
}
La fonction Tri Rapide(T)
void Tri Rapide(int T[ ], int N){
Tri Rapide Partition(T, 0,N-1) ;}
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 21/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Principe de tri fusion
D´efinition
Le tri fusion (merge sort) est un des premiers algorithmes invent´es pour trier un
tableau car (selon Donald Knuth) il aurait ´et´e propos´e par John von Neuman d`es
1945 ; il constitue un parfait exemple d’algorithme naturellement r´ecursif qui utilise le
concept de la programmation diviser pour r´egner.
Principe de fonctionnement
L’algorithme peut s’effectuer r´ecursivement :
1 On d´ecoupe en deux parties `a peu pr`es ´egales les donn´ees `a trier.
2 On trie les donn´ees de chaque partie.
3 On fusionne les deux parties.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 22/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Des exemples d’illustration
Exemple 1
On va illustrer le tri fusion sur le tableau T=[7,6,3,5,4,2,1,8].
• Pour trier T[0 :8], on trie T[0 :4] et T[4 :8].
• Pour trier T[0 :4], on trie T[0 :2] et T[2 :4].
• Pour trier T[0 :2], on trie T[0 :1] et T[1 :2].
• On fusionne T[0 :1] et T[1 :2].
• Pour trier T[2 :4], on trie T[2 :3] et T[3 :4].
• On fusionne T[0 :1] et T[1 :2]
• On fusionne T[0 :2] et T[2 :4].
• Pour trier T[4 :8], on trie T[4 :6] et T[6 :8].
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 23/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Des exemples d’illustration
• Pour trier T[4 :6], on trie T[4 :5] et T[5 :6].
• On fusionne T[4 :5] et T[5 :6]
• Pour trier T[6 :8], on trie T[6 :7] et T[7 :8].
• On fusionne T[6 :7] et T[7 :8].
• On fusionne T[4 :6] et T[6 :8].
• On fusionne T[0 :4] et T[4 :8].
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 24/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Des exemples d’illustration
Exemple 2
On va illustrer le tri fusion sur le tableau T=[3,4,6,2,5,1,8,7].
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 25/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Impl´ementation de l’algorithme de tri fusion
Tri fusion -Solution-
Pour impl´ementer l’algorithme tri fusion on a besoin de programmer trois
fonctions :
1 Une fonction it´erative Fusion(T1,T2,g,m,d) qui prend en arguments deux
tableaux, T1 et T2, et les trois indices g, m et d. Les portions a1[g..m[ et
a1[m..d[ sont suppos´ees tri´ees. Cette fonction permet d’effectuer la fusion
de ces deux portions.
2 La fonction r´ecursive Tri Fusion Rec(T,g, d) prend en arguments les
indices g et d d´elimitant la portion `a trier. Si le segment contient au plus
un ´el´ement, c’est-`a-dire si g >= d − 1, il n’y a rien `a faire. Sinon, on
partage l’intervalle en deux moiti´es ´egales : on calcule l’´el´ement m´edian
m, puis on trie r´ecursivement T[g..m[ et T[m..d[.
3 Une fonction Tri Fusion(T) permettant de trier la liste T en uitlisant
l’algorithme tri fusion.
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 26/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Impl´ementation de l’algorithme de tri fusion
Tri fusion -Solution-
Programme it´eratif Fusion(T1,T2,g,m,d)
void Fusion(int T1[ ], int T2[ ], int g, int m, int d)
....
....
.....
....
.....
.....
....
.....
.....
....
.....
.....
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 27/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Impl´ementation de l’algorithme de tri fusion
Tri fusion -Solution-
Le code complet :Tri Fusion Rec(T,g,d)
void Tri Fusion Rec(int T[ ], int g, int d)
....
....
.....
....
.....
.....
....
.....
.....
....
.....
.....
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 28/ 29
Les algorithmes de recherche
Les algorithmes de tris classiques
Les algorithmes de tris rapides
Tri rapide
Tri fusion
Impl´ementation de l’algorithme de tri fusion
Tri fusion -Solution-
Le code complet : Tri Fusion(T)
void Tri Fusion(int T[ ], int N)
....
....
.....
....
.....
.....
....
.....
.....
....
.....
.....
Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 29/ 29

Contenu connexe

Tendances

Chapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéChapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéSana Aroussi
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Ines Ouaz
 
conception et création une base de donnée de réservation de vol
conception et création une base de donnée de réservation de vol conception et création une base de donnée de réservation de vol
conception et création une base de donnée de réservation de vol sara bada
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesAnass41
 
Chapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheChapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheSana Aroussi
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabMariem ZAOUALI
 
Chapitre 5 arbres binaires
Chapitre 5 arbres binairesChapitre 5 arbres binaires
Chapitre 5 arbres binairesSana Aroussi
 
Methodes d'accès dans les réseaux locaux
Methodes d'accès dans les réseaux locauxMethodes d'accès dans les réseaux locaux
Methodes d'accès dans les réseaux locauxInes Kechiche
 
Algorithmique et Structures de Données II
Algorithmique et Structures de Données IIAlgorithmique et Structures de Données II
Algorithmique et Structures de Données IIRiadh Bouslimi
 
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).vangogue
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
Examen Principal - Fondement Multimedia Janvier 2015
Examen Principal - Fondement Multimedia Janvier 2015Examen Principal - Fondement Multimedia Janvier 2015
Examen Principal - Fondement Multimedia Janvier 2015Ines Ouaz
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1vangogue
 
Cours algo: Les pointeurs
Cours algo: Les pointeursCours algo: Les pointeurs
Cours algo: Les pointeursSana REFAI
 

Tendances (20)

Chapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéChapitre ii complexité et optimalité
Chapitre ii complexité et optimalité
 
Algorithmes de tri
Algorithmes de triAlgorithmes de tri
Algorithmes de tri
 
Les enregistrements
Les enregistrements Les enregistrements
Les enregistrements
 
Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)Travaux dirigés 1: algorithme & structures de données (corrigés)
Travaux dirigés 1: algorithme & structures de données (corrigés)
 
conception et création une base de donnée de réservation de vol
conception et création une base de donnée de réservation de vol conception et création une base de donnée de réservation de vol
conception et création une base de donnée de réservation de vol
 
Travaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de DonnéesTravaux Dirigés : Algorithmique et Structure de Données
Travaux Dirigés : Algorithmique et Structure de Données
 
Chapitre 1 arbres de recherche
Chapitre 1 arbres de rechercheChapitre 1 arbres de recherche
Chapitre 1 arbres de recherche
 
TP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec MatlabTP1 Traitement d'images Génie Logiciel avec Matlab
TP1 Traitement d'images Génie Logiciel avec Matlab
 
Chapitre 5 arbres binaires
Chapitre 5 arbres binairesChapitre 5 arbres binaires
Chapitre 5 arbres binaires
 
Methodes d'accès dans les réseaux locaux
Methodes d'accès dans les réseaux locauxMethodes d'accès dans les réseaux locaux
Methodes d'accès dans les réseaux locaux
 
Algorithmique et Structures de Données II
Algorithmique et Structures de Données IIAlgorithmique et Structures de Données II
Algorithmique et Structures de Données II
 
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
EXPOSE SUR L’ALGORITHME DU TRI À BULLES (BUBBLE SORT).
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Examen Principal - Fondement Multimedia Janvier 2015
Examen Principal - Fondement Multimedia Janvier 2015Examen Principal - Fondement Multimedia Janvier 2015
Examen Principal - Fondement Multimedia Janvier 2015
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Tp n 6 linux
Tp n 6 linuxTp n 6 linux
Tp n 6 linux
 
Exam 15.02.2022.pdf
Exam 15.02.2022.pdfExam 15.02.2022.pdf
Exam 15.02.2022.pdf
 
Cours algo: Les pointeurs
Cours algo: Les pointeursCours algo: Les pointeurs
Cours algo: Les pointeurs
 
Présentation PFE
Présentation PFEPrésentation PFE
Présentation PFE
 

En vedette

Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de TriCh5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Trilotfibenromdhane
 
Labyrinthes
LabyrinthesLabyrinthes
Labyrinthesartxtra
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage CMohamed Lahby
 
Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur Mohamed Lahby
 
Chapitre 8: Les arbres
Chapitre 8: Les  arbresChapitre 8: Les  arbres
Chapitre 8: Les arbresMohamed Lahby
 
Serie tri revision_3si
Serie tri revision_3siSerie tri revision_3si
Serie tri revision_3siRiadh Harizi
 
Chap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueChap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueMohamed Lahby
 
Chapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSIChapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSIMohamed Lahby
 

En vedette (11)

Ch5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de TriCh5 Algorthmique Avancée - Algorithme de Tri
Ch5 Algorthmique Avancée - Algorithme de Tri
 
Labyrinthes
LabyrinthesLabyrinthes
Labyrinthes
 
Les listes simplement chaînées en langage C
Les listes simplement chaînées en langage CLes listes simplement chaînées en langage C
Les listes simplement chaînées en langage C
 
Langage c partie_2
Langage c partie_2Langage c partie_2
Langage c partie_2
 
Programmation Java
Programmation JavaProgrammation Java
Programmation Java
 
Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur Chapitre 4: Architecture simplifiée d’un ordinateur
Chapitre 4: Architecture simplifiée d’un ordinateur
 
Chapitre 8: Les arbres
Chapitre 8: Les  arbresChapitre 8: Les  arbres
Chapitre 8: Les arbres
 
Serie tri revision_3si
Serie tri revision_3siSerie tri revision_3si
Serie tri revision_3si
 
Chap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmiqueChap1 introduction à l'algoritmique
Chap1 introduction à l'algoritmique
 
Chapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSIChapitre 2: Modèle de référence OSI
Chapitre 2: Modèle de référence OSI
 
Animations tris
Animations trisAnimations tris
Animations tris
 

Similaire à Chapitre 3 Les algorithmes de recherche et de tris

Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite Saddem Chikh
 
L’analyse et Expérimentation de algorithme du Tri par sélection
L’analyse et Expérimentation de algorithme du Tri par sélectionL’analyse et Expérimentation de algorithme du Tri par sélection
L’analyse et Expérimentation de algorithme du Tri par sélectionyoucefsama
 
Analyse factorielle des_correspondances-afc
Analyse factorielle des_correspondances-afcAnalyse factorielle des_correspondances-afc
Analyse factorielle des_correspondances-afcRémi Bachelet
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétudeSana Aroussi
 
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN C
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN CProjet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN C
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN CEnochBidima3
 
Un algorithme pour trouver le dénominateur commun de plusieurs fractions
Un algorithme pour trouver le dénominateur commun de plusieurs fractionsUn algorithme pour trouver le dénominateur commun de plusieurs fractions
Un algorithme pour trouver le dénominateur commun de plusieurs fractionsClément Boulonne
 
Cours_3_0910_2.pdf
Cours_3_0910_2.pdfCours_3_0910_2.pdf
Cours_3_0910_2.pdfSongSonfack
 
Chapitre 2 - Les algorithmes de recherche et de tri.pdf
Chapitre 2 - Les algorithmes de recherche et de tri.pdfChapitre 2 - Les algorithmes de recherche et de tri.pdf
Chapitre 2 - Les algorithmes de recherche et de tri.pdfShiniGami0o0
 
La recherche approchée de motifs : théorie et applications
La recherche approchée de motifs : théorie et applications La recherche approchée de motifs : théorie et applications
La recherche approchée de motifs : théorie et applications Ibrahim Chegrane
 
Chapitre3_Partie1.pdf
Chapitre3_Partie1.pdfChapitre3_Partie1.pdf
Chapitre3_Partie1.pdfMbarkiIsraa
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfMbarkiIsraa
 
Tableau a deux dimensions (1).pptx
Tableau a deux dimensions (1).pptxTableau a deux dimensions (1).pptx
Tableau a deux dimensions (1).pptxPROFPROF11
 
Expérimentation et interprétation des algorithmes de tri élémentaires tp algo...
Expérimentation et interprétation des algorithmes de tri élémentaires tp algo...Expérimentation et interprétation des algorithmes de tri élémentaires tp algo...
Expérimentation et interprétation des algorithmes de tri élémentaires tp algo...Soumia Elyakote HERMA
 
Présentation Finale - Partie I.pptx
Présentation Finale - Partie I.pptxPrésentation Finale - Partie I.pptx
Présentation Finale - Partie I.pptxouassityoussef
 
09 visual basic .net - exercice - geometrie
09 visual basic .net - exercice - geometrie09 visual basic .net - exercice - geometrie
09 visual basic .net - exercice - geometrieHamza SAID
 

Similaire à Chapitre 3 Les algorithmes de recherche et de tris (20)

Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
L’analyse et Expérimentation de algorithme du Tri par sélection
L’analyse et Expérimentation de algorithme du Tri par sélectionL’analyse et Expérimentation de algorithme du Tri par sélection
L’analyse et Expérimentation de algorithme du Tri par sélection
 
Analyse factorielle des_correspondances-afc
Analyse factorielle des_correspondances-afcAnalyse factorielle des_correspondances-afc
Analyse factorielle des_correspondances-afc
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN C
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN CProjet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN C
Projet.pptx PRESENTATION DU PROJET DE PROGAMMATION EN C
 
algo-imsi-2.pdf
algo-imsi-2.pdfalgo-imsi-2.pdf
algo-imsi-2.pdf
 
Un algorithme pour trouver le dénominateur commun de plusieurs fractions
Un algorithme pour trouver le dénominateur commun de plusieurs fractionsUn algorithme pour trouver le dénominateur commun de plusieurs fractions
Un algorithme pour trouver le dénominateur commun de plusieurs fractions
 
Cours_3_0910_2.pdf
Cours_3_0910_2.pdfCours_3_0910_2.pdf
Cours_3_0910_2.pdf
 
Cours_3_0910.pdf
Cours_3_0910.pdfCours_3_0910.pdf
Cours_3_0910.pdf
 
Chapitre 2 - Les algorithmes de recherche et de tri.pdf
Chapitre 2 - Les algorithmes de recherche et de tri.pdfChapitre 2 - Les algorithmes de recherche et de tri.pdf
Chapitre 2 - Les algorithmes de recherche et de tri.pdf
 
La recherche approchée de motifs : théorie et applications
La recherche approchée de motifs : théorie et applications La recherche approchée de motifs : théorie et applications
La recherche approchée de motifs : théorie et applications
 
Chapitre3_Partie1.pdf
Chapitre3_Partie1.pdfChapitre3_Partie1.pdf
Chapitre3_Partie1.pdf
 
Algo3.pdf
Algo3.pdfAlgo3.pdf
Algo3.pdf
 
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdfChapitre 3 _Conception et analyse d’algorithme-DPR.pdf
Chapitre 3 _Conception et analyse d’algorithme-DPR.pdf
 
Tableau a deux dimensions (1).pptx
Tableau a deux dimensions (1).pptxTableau a deux dimensions (1).pptx
Tableau a deux dimensions (1).pptx
 
Expérimentation et interprétation des algorithmes de tri élémentaires tp algo...
Expérimentation et interprétation des algorithmes de tri élémentaires tp algo...Expérimentation et interprétation des algorithmes de tri élémentaires tp algo...
Expérimentation et interprétation des algorithmes de tri élémentaires tp algo...
 
Algorithmique iii
Algorithmique iiiAlgorithmique iii
Algorithmique iii
 
Présentation Finale - Partie I.pptx
Présentation Finale - Partie I.pptxPrésentation Finale - Partie I.pptx
Présentation Finale - Partie I.pptx
 
09 visual basic .net - exercice - geometrie
09 visual basic .net - exercice - geometrie09 visual basic .net - exercice - geometrie
09 visual basic .net - exercice - geometrie
 

Dernier

Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...Faga1939
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfssuserc72852
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 

Dernier (13)

Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 

Chapitre 3 Les algorithmes de recherche et de tris

  • 1. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Chapitre 3 Les algorithmes de recherche et de tris Module 20: Informatique 3 Algorithmique et programmation C 2´eme ANNEE LICENCE D’ENSEIGNEMENT DE MATHEMATIQUES (LEM) 2´eme ANNEE LICENCE CRYPTO MATHEMATIQUE ET SECURITE DE L’INFORMATION (LCMSI) Texte Texte Texte mlahby@gmail.com 7 novembre 2016 Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 1/ 29
  • 2. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Plan 1 Les algorithmes de recherche Recherche s´equentielle Recherche dichotomique dans un tableau tri´e 2 Les algorithmes de tris classiques Tri par s´election Tri par bulle Tri par insertion 3 Les algorithmes de tris rapides Tri rapide Tri fusion Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 2/ 29
  • 3. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Recherche s´equentielle Recherche dichotomique dans un tableau tri´e Recherche s´equentielle Principe de l’algorithme On cherche `a d´eterminer si un tableau contient une certaine valeur. On parcours le tableau ´el´ement par ´el´ement, et on interrompre le parcours d`es que l’´el´ement est trouv´e. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 3/ 29
  • 4. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Recherche s´equentielle Recherche dichotomique dans un tableau tri´e Recherche s´equentielle Solution 1 int Recherche Seq(int T[],int N, int x) {int i=0 ; while (i<N and T[i] !=x) {i=i+1 ; } if (i<N) return 1 ; else return 0 ; } Solution 2 int Recherche Seq(int T[],int N, int x) {int i=0 ; for (i=0 ;i < N ;i++) if (T[i]==x) return 1 ; return 0 ; } Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 4/ 29
  • 5. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Recherche s´equentielle Recherche dichotomique dans un tableau tri´e Recherche s´equentielle Complexit´e la complexit´e est O(n) Inconv´enient Cet algorithme est d´econseill´e pour les tableaux tri´es. Un dictionnaire contient de l’ordre de 105 mots Si un test prend 0,01s, une recherche compl`ete prendrait plus de un 1minute 30 s. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 5/ 29
  • 6. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Recherche s´equentielle Recherche dichotomique dans un tableau tri´e Recherche dichotomique dans un tableau tri´e Principe de l’algorithme la recherche d’un ´el´ement dans un tableau avec la m´ethode de dichotomique requiert un tableau tri´e. On on coupe le tableau en deux par le milieu et on d´etermine si la valeur x doit ˆetre recherch´ee dans la moiti´e gauche ou droite En effet, il suffit pour cela de la comparer avec la valeur centrale. Puis, on r´ep`ete le processus sur la portion s´electionn´ee. . Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 6/ 29
  • 7. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Recherche s´equentielle Recherche dichotomique dans un tableau tri´e Recherche dichotomique dans un tableau tri´e D´efinition de la fonction int RechDichotomique(int T[],int N, int x) {int g, d, m ; g=0 ; d=N-1 ; while(g<=d) { m=(g+d)/2 ; if (T[m]==x) return 1 ; if (T[m]<x) g=m+1 ; else d=m-1 ; } return 0 ; } Complexit´e la complexit´e de la recherche dichotomique est O(log(n)) Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 7/ 29
  • 8. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri par s´election Tri par bulle Tri par insertion Tri par s´election Principe Le tri par s´election consiste `a chercher la plus petite valeur de la liste, puis de la mettre `a la derni`ere place en l’´echangeant avec la premi`ere valeur. On r´eit`ere alors le proc´ed´e sur la liste restreinte aux nombres restants et cela jusqu’`a obtenir la liste tri´ee. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 8/ 29
  • 9. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri par s´election Tri par bulle Tri par insertion Tri par s´election La fonction TriSelection(T,n) void TriSelection(int T[],int n) : {int i,j,Posmin,Tmp ; for(i=0 ;i<n-1 ;i++) { Posmin=i ; for(j=i+1 ;i<n ;i++){ if (T[j]<T[Posmin]) Posmin=j ;} /*****Permutation******/ Tmp=T[i] ; T[i]=T[Posmin] ; T[Posmin]=Tmp ; } } Complexit´e la complexit´e est O(n2) Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 9/ 29
  • 10. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri par s´election Tri par bulle Tri par insertion Tri par bulle Principe Le principe du tri par bulle consiste `a comparer deux `a deux les ´el´ements e1 et e2 cons´ecutifs d’un tableau et d’effecteur une permutation si e1 > e2. On continue de trier jusqu’`a ce qu’il n’y ait plus de permutation. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 10/ 29
  • 11. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri par s´election Tri par bulle Tri par insertion Tri par bulle La fonction TriBulle(T,n) void TriBulle(int T[ ],int n) {int i,Tmp,inversion=1 ; while (inversion) { inversion=0 ; for(i=0 ;i<n-1 ;i++) if (T[i]>T[i+1]){ /*****Permutation*****/ Tmp=T[i] ; T[i]=T[i+1] ; T[i+1]=Tmp ; inversion=1 ;} } } Complexit´e la complexit´e est O(n2) Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 11/ 29
  • 12. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri par s´election Tri par bulle Tri par insertion Tri par insertion Principe Le tri par insertion consiste `a ins´erer le premier ´el´ement `a trier au premier emplacement d’une nouvelle liste, puis on ins`ere chaque nouvel ´el´ement `a sa bonne place dans la liste d`ej`a tri´ee. On r´eit`ere alors le proc´ed´e jusqu’`a avoir replac´e tous les ´el´ements de la liste initiale. (jeu de cartes ou un paquet de copies). Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 12/ 29
  • 13. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri par s´election Tri par bulle Tri par insertion Tri par insertion La fonction TriInsertion(T,n) void TriInsertion(int T[ ],int n) {int i,j,Tmp ; for(i=0 ;i<n ;i++) { j=i-1 ; while (j>=0 and T[j]>T[j+1]) { /********Permutation********/ Temp=T[j] ; T[j]=T[j+1] ; T[j+1]=Tmp ; j=j-1 ; } } } Complexit´e la complexit´e est O(n2) Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 13/ 29
  • 14. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Principe de tri rapide D´efinition Le tri rapide (en anglais quicksort) est un algorithme de tri invent´e par C.A.R. Hoare en 1961 et fond´e sur la m´ethode de conception diviser pour r´egner. Il est g´en´eralement utilis´e sur des tableaux, mais peut aussi ˆetre adapt´e aux autres types de donn´ees. Principe de fonctionnement L’algorithme peut s’effectuer r´ecursivement : 1 Le premier ´el´ement de la liste `a trier est appel´e “pivot”. 2 On cr´ee un premier sous-enemble constitu´e des ´el´ements plus petits que le pivot. On les place `a gauche du pivot dans l’ordre o`u ils sont dans la liste `a trier. 3 On cr´ee de la mˆeme fa¸con un deuxi`eme sous-enemble constitu´e des ´el´ements plus grands que le pivot. On les place `a droite de celui-ci dans l’ordre o`u ils apparaissent dans le tableau. 4 On proc`ede de mˆeme, par recursivit´e, sur les deux sous-ensembles jusqu’`a obtenir des sous ensembles d’un seul ´el´ement. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 14/ 29
  • 15. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Des exemples d’illustration Exemple 1 On va illustrer le tri rapide sur le tableau T=[7,6,3,5,4,2,1]. On choisit comme Pivot une valeur al´eotoire du tableau T. 1. It´eration 1 : Pour trier T[0 :7], on choisit au hasard 4 comme pivot. On place les ´el´ements plus petits que 4, puis 4, puis les autres. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 15/ 29
  • 16. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Des exemples d’illustration 2. It´eration 2 : Pour trier T[0 :3], on choisit 3 comme pivot. On place les ´el´ements plus petits que 3, puis 3, puis les autres. 3. It´eration 3 : Pour trier T[0 :2], on choisit 2 comme pivot.. On place les ´el´ements plus petits que 2, puis 2, puis les autres. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 16/ 29
  • 17. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Des exemples d’illustration 4. It´eration 4 : Pour trier T[0 :3], on choisit 3 comme pivot. On place les ´el´ements plus petits que 3, puis 3, puis les autres. 5. It´eration 5 : Pour trier T[0 :2], on choisit 2 comme pivot.. On place les ´el´ements plus petits que 2, puis 2, puis les autres. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 17/ 29
  • 18. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Des exemples d’illustration Exemple 2 On va illustrer le tri rapide sur le tableau T=[4,6,3,5,7,2,1] (Pivot=T[0]). Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 18/ 29
  • 19. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Impl´ementation de l’algorithme de tri rapide Tri rapide -Solution- Pour impl´ementer l’algorithme tri rapide on a besoin de programmer quatre fonctions : 1 La fonction Echange(T,i,j) pour ´echanger les ´el´ements T[i] et T[j] d’un tableau T 2 La fonction Partition(T, premier, dernier) prend le tableau T et deux indices premier et dernier en arguments, avec la convention que premier est inclus et dernier exclu. On suppose qu’il y a au moins un ´el´ement dans ce segment, 3 La fonction Tri Rapide Partition(T, premier, dernier) : qui permet de trier une liste T en la partitionnant r´ecursivement en sous listes. 4 La fonction Tri Rapide(T) permettant de trier la liste T en uitlisant l’algorithme tri rapide. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 19/ 29
  • 20. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Impl´ementation de l’algorithme de tri rapide La fonction Partition(T, premier, dernier) void partition(int T[ ], int premier, int dernier) {int gauche,droite, pivot = T[premier] gauche = premier #On pointe gauche sur l’indice de pivot droite = dernier flag = 0 while (flag == 0){ while (T[droite] >= pivot and droite >= gauche){ droite = droite - 1 ;} if (droite >= gauche){ Echange(T,gauche,droite) ; pivot=T[droite] ;} while (gauche <= droite and T[gauche] <= pivot){ gauche = gauche + 1 ;} if (gauche <= droite){ Echange(T,gauche,droite) ; pivot=T[gauche] ;} if (droite < gauche){#condition d’arrˆet flag = 1 ;} } return droite ;} Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 20/ 29
  • 21. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Impl´ementation de l’algorithme de tri rapide Tri rapide -Solution- La fonction Echange(T,i,j) void Echange(int T[ ],int i,int j) ............. La fonction Tri Rapide Partition(T) void Tri Rapide Partition(int T[ ], int premier,int dernier){ int m ; if (premier < dernier){ m = partition(T, premier, dernier) ; Tri Rapide Partition(T, premier, m-1) ; Tri Rapide Partition(T, m+1, dernier) ;} } La fonction Tri Rapide(T) void Tri Rapide(int T[ ], int N){ Tri Rapide Partition(T, 0,N-1) ;} Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 21/ 29
  • 22. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Principe de tri fusion D´efinition Le tri fusion (merge sort) est un des premiers algorithmes invent´es pour trier un tableau car (selon Donald Knuth) il aurait ´et´e propos´e par John von Neuman d`es 1945 ; il constitue un parfait exemple d’algorithme naturellement r´ecursif qui utilise le concept de la programmation diviser pour r´egner. Principe de fonctionnement L’algorithme peut s’effectuer r´ecursivement : 1 On d´ecoupe en deux parties `a peu pr`es ´egales les donn´ees `a trier. 2 On trie les donn´ees de chaque partie. 3 On fusionne les deux parties. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 22/ 29
  • 23. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Des exemples d’illustration Exemple 1 On va illustrer le tri fusion sur le tableau T=[7,6,3,5,4,2,1,8]. • Pour trier T[0 :8], on trie T[0 :4] et T[4 :8]. • Pour trier T[0 :4], on trie T[0 :2] et T[2 :4]. • Pour trier T[0 :2], on trie T[0 :1] et T[1 :2]. • On fusionne T[0 :1] et T[1 :2]. • Pour trier T[2 :4], on trie T[2 :3] et T[3 :4]. • On fusionne T[0 :1] et T[1 :2] • On fusionne T[0 :2] et T[2 :4]. • Pour trier T[4 :8], on trie T[4 :6] et T[6 :8]. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 23/ 29
  • 24. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Des exemples d’illustration • Pour trier T[4 :6], on trie T[4 :5] et T[5 :6]. • On fusionne T[4 :5] et T[5 :6] • Pour trier T[6 :8], on trie T[6 :7] et T[7 :8]. • On fusionne T[6 :7] et T[7 :8]. • On fusionne T[4 :6] et T[6 :8]. • On fusionne T[0 :4] et T[4 :8]. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 24/ 29
  • 25. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Des exemples d’illustration Exemple 2 On va illustrer le tri fusion sur le tableau T=[3,4,6,2,5,1,8,7]. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 25/ 29
  • 26. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Impl´ementation de l’algorithme de tri fusion Tri fusion -Solution- Pour impl´ementer l’algorithme tri fusion on a besoin de programmer trois fonctions : 1 Une fonction it´erative Fusion(T1,T2,g,m,d) qui prend en arguments deux tableaux, T1 et T2, et les trois indices g, m et d. Les portions a1[g..m[ et a1[m..d[ sont suppos´ees tri´ees. Cette fonction permet d’effectuer la fusion de ces deux portions. 2 La fonction r´ecursive Tri Fusion Rec(T,g, d) prend en arguments les indices g et d d´elimitant la portion `a trier. Si le segment contient au plus un ´el´ement, c’est-`a-dire si g >= d − 1, il n’y a rien `a faire. Sinon, on partage l’intervalle en deux moiti´es ´egales : on calcule l’´el´ement m´edian m, puis on trie r´ecursivement T[g..m[ et T[m..d[. 3 Une fonction Tri Fusion(T) permettant de trier la liste T en uitlisant l’algorithme tri fusion. Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 26/ 29
  • 27. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Impl´ementation de l’algorithme de tri fusion Tri fusion -Solution- Programme it´eratif Fusion(T1,T2,g,m,d) void Fusion(int T1[ ], int T2[ ], int g, int m, int d) .... .... ..... .... ..... ..... .... ..... ..... .... ..... ..... Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 27/ 29
  • 28. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Impl´ementation de l’algorithme de tri fusion Tri fusion -Solution- Le code complet :Tri Fusion Rec(T,g,d) void Tri Fusion Rec(int T[ ], int g, int d) .... .... ..... .... ..... ..... .... ..... ..... .... ..... ..... Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 28/ 29
  • 29. Les algorithmes de recherche Les algorithmes de tris classiques Les algorithmes de tris rapides Tri rapide Tri fusion Impl´ementation de l’algorithme de tri fusion Tri fusion -Solution- Le code complet : Tri Fusion(T) void Tri Fusion(int T[ ], int N) .... .... ..... .... ..... ..... .... ..... ..... .... ..... ..... Module 20: Informatique 3 Algorithmique et programmation C ENS Casablanca 2016-2017 29/ 29