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

Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
Chahrawoods Dmz
 
Chapitre 3 la recherche tabou
Chapitre 3 la recherche tabouChapitre 3 la recherche tabou
Chapitre 3 la recherche tabou
Achraf Manaa
 
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
Anass41
 

Tendances (20)

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
 
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).
 
Algorithme & structures de données Chap I
Algorithme & structures de données Chap IAlgorithme & structures de données Chap I
Algorithme & structures de données Chap I
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
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
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Chapitre 1 rappel
Chapitre 1   rappelChapitre 1   rappel
Chapitre 1 rappel
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
Récursivité
RécursivitéRécursivité
Récursivité
 
Chapitre 3 la recherche tabou
Chapitre 3 la recherche tabouChapitre 3 la recherche tabou
Chapitre 3 la recherche tabou
 
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
 
Serie2
Serie2Serie2
Serie2
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Chapitre 4 heuristiques et méta heuristiques
Chapitre 4 heuristiques et méta heuristiquesChapitre 4 heuristiques et méta heuristiques
Chapitre 4 heuristiques et méta heuristiques
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
 
Chapitre 1 rappel
Chapitre 1 rappelChapitre 1 rappel
Chapitre 1 rappel
 
Cours : les listes chainées Prof. KHALIFA MANSOURI
Cours : les listes chainées  Prof. KHALIFA MANSOURI Cours : les listes chainées  Prof. KHALIFA MANSOURI
Cours : les listes chainées Prof. KHALIFA MANSOURI
 
Chapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptxChapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptx
 

En vedette (9)

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
 
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
 
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 complet
Chahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
Saddem Chikh
 
Analyse factorielle des_correspondances-afc
Analyse factorielle des_correspondances-afcAnalyse factorielle des_correspondances-afc
Analyse factorielle des_correspondances-afc
Rémi Bachelet
 
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.pdf
MbarkiIsraa
 
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
MbarkiIsraa
 
Réseaux, Territoires, Milieux associés. Jeu théorique entre combinatoires et ...
Réseaux, Territoires, Milieux associés. Jeu théorique entre combinatoires et ...Réseaux, Territoires, Milieux associés. Jeu théorique entre combinatoires et ...
Réseaux, Territoires, Milieux associés. Jeu théorique entre combinatoires et ...
JulienIFEA
 

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
 
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
 
Réseaux, Territoires, Milieux associés. Jeu théorique entre combinatoires et ...
Réseaux, Territoires, Milieux associés. Jeu théorique entre combinatoires et ...Réseaux, Territoires, Milieux associés. Jeu théorique entre combinatoires et ...
Réseaux, Territoires, Milieux associés. Jeu théorique entre combinatoires et ...
 

Dernier

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
ssuserc72852
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
AmgdoulHatim
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
ikospam0
 

Dernier (20)

Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
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
 
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptxIntégration des TICE dans l'enseignement de la Physique-Chimie.pptx
Intégration des TICE dans l'enseignement de la Physique-Chimie.pptx
 
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.
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
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...
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
les_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhkles_infections_a_streptocoques.pptkioljhk
les_infections_a_streptocoques.pptkioljhk
 
Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
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
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANKRAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
RAPPORT DE STAGE D'INTERIM DE ATTIJARIWAFA BANK
 
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
 
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
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
L'expression du but : fiche et exercices niveau C1 FLE
L'expression du but : fiche et exercices  niveau C1 FLEL'expression du but : fiche et exercices  niveau C1 FLE
L'expression du but : fiche et exercices niveau C1 FLE
 
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
CompLit - Journal of European Literature, Arts and Society - n. 7 - Table of ...
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
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