PLAN DU COURS ALGORITHME DE RECHERCHE

publicité
12/03/2013
PLAN DU COURS
•
•
•
•
•
•
•
•
•
•
•
•
•
Introduction au langage C
Notions de compilation
Variables, types, constantes,
Tableaux, opérateurs
Entrées sorties de base
Structures de contrôle
Algorithmes de recherche
Algorithmes de Tri –Insertion-Fusion
Les pointeurs
Procédures et fonctions
les types composés
Allocation dynamique
Listes Chaînées
MAP - UNS
101
ALGORITHME DE RECHERCHE
• Objectif : Rechercher une information dans un tableau
• Méthode : séquentielle
• Soit T un tableau de N éléments et val l’élément cherché
• parcours du tableau à partir du premier élément (T[0])
• Arrêt quand élément trouvé ou si fin de tableau (T[n-1])
• Complexité :
• linéaire de l’ordre de n.
• Pire cas : parcourt de tout le tableau
MAP - UNS
102
1
12/03/2013
RECHERCHE SÉQUENTIELLE
Algorithme recherche_sequentielle
{Recherche le premier indice où se trouve la valeur val parmi les N données
du tableau tab; affiche l’indice si la valeur est trouvée. }
variables :
Début
T [0, N-1], val entier
n, val, indice : entier
indice ←0
tant que ( val <> T[indice] && indice < N-1) faire
indice ←indice + 1
ftq
7
si T[indice] = val alors
afficher( " l'élément se trouve en : » indice);
sinon
afficher( « Elément non présent " );
fsi
1
15
8
2
Fin
MAP - UNS
103
ALGORITHME DE RECHERCHE
• Objectif : Rechercher une information dans un tableau trié
• Méthode : dichotomique ou « diviser pour régner »
•
•
•
•
Soit T un tableau de N éléments et val l’élément cherché
T est trié
Sinon effectuer un prétraitement de tri.
Comparer val avec l’élément u milieu du tableau T.
• Si c’est le même => trouvé
• sinon on recommence sur la première moitié ou la seconde selon que val est
< à valmid ou val > valmid
• Arrêt quand élément trouvé ou si fin de tableau (T[indice-1])
• Complexité :
• T(n) nombre d’opérations sur un tableau de taille n
• T(n) satisfait l’équation de récurrence T(n) = T(n/2)+1
MAP - UNS
104
2
12/03/2013
RECHERCHE DICHOTOMIQUE
Algorithme recherche_dichotomique
{Recherche le premier indice où se trouve la valeur val en utilisant la stratégie diviser pour régner }
variables T [0, N-1] , val entier
lnf, Sup, N, Mi : entier
Début
Saisir (val)
Inf ← 0
Sup ← N-1
Mi ← (Inf + Sup)/2
tant que ( val <> T[Mi] && Inf <= Sup) faire
si val < T[Mi] alors
Sup = Mid - 1
sinon
Inf = Mid + 1
fsi
Mi ← (Inf + Sup)/2
ftq
si T[Mi] = val alors
afficher( " l'élément se trouve en : » Mi);
sinon
afficher( « Elément non présent " );
fsi
Fin
MAP - UNS
105
PLAN DU COURS
•
•
•
•
•
•
•
•
•
•
•
•
•
Introduction au langage C
Notions de compilation
Variables, types, constantes,
Tableaux, opérateurs
Entrées sorties de base
Structures de contrôle
Algorithmes de recherche
Algorithmes de Tri –Insertion-Fusion
Les pointeurs
Procédures et fonctions
les types composés
Allocation dynamique
Listes Chaînées
MAP - UNS
106
3
12/03/2013
ALGORITHMES DE TRI
• Objectif : Etant donné une suite de N nombres de la ranger par ordre
croissant (ou décroissant)
• Différents algorithmes
•
Tri par sélection
• Tri se fait en espace constant
• Peu économe en temps (2 boucles for imbriquées )
•
•
•
Boucle interne fait N-1 opérations
Boucle externe fait N-1 à itération 1, N-2 (itération 2) …
Complexité 2*(N-1)+(N-2) +(N-3) …+ 1 = (N+1)*N+N! ≈ N2
• Tri à bulles
• Peu économe en temps (2 boucles for imbriquées )
• Complexité ≈ N2
• Tri rapide
• Econome en temps
• Complexité ≈ N*Log(N)
• Algorithme récursif
MAP - UNS
107
ALGORITHME DE TRI
• Objectif : Etant donné une suite de N nombres de la ranger par
ordre croissant (ou décroissant)
• Méthode : Tri par sélection
• Soit T un tableau de N éléments
• Rechercher le plus petit élément parmi les N et on l’échange à la fin avec le 1er
7
8
9
2
0
• Puis recherche du plus petit parmi les N-1 éléments restant et échange avec le
2ème
0
8
9
2
7
• … parmi N-k+1 éléments restants échange avec le Kième
0
2
9
8
7
MAP - UNS
0
2
7
8
9
108
4
12/03/2013
TRI PAR SELECTION
Algorithme tri_selection
{ Ranger par ordre croissant (ou décroissant) une suite de N nombres rangés dans un
tableau T. }
variables tab :
Début
tableau [0, N-1] de entier
N, i, j, indiceMin, ValMin : entier
7
8
pour i = 0 à N-2 faire
indiceMin ← i
i=0
ValMin ← T[i]
pour j = i +1 à N-1 faire
si T[j] < ValMin alors
indiceMin ← j
ValMin ← T[j]
fsi
fpour
T[indiceMin] ← T[i] { Echange des deux valeurs }
T[i] ← ValMin
fpour
9
2
0
8
9
i=1
7
j=1
2
j=2
j=3
j=4
indiceMin=0 ValMin=7
indiceMin=3 ValMin=2
IndiceMin=4 ValMin=0
T[0]=0
T[4]=7
MAP - UNS
Fin
0
109
ALGORITHME DE TRI
• Objectif : faire remonter les plus grandes valeurs en haut de tableau
• Méthode : Tri à bulle
• Soit T un tableau de N éléments
• Comparer 1er élément avec 2ème . Si 1er >2ème , échanger les deux éléments
5
• Comparer
2ème
1
1
4
élément avec
5
4
2
3ème
2
8
. Si
2er
>3ème , échanger les deux éléments
8
• … comparer N-2ième avec N-1 ième. Si N-2 ième > N-1 ième, échanger les deux éléments.
1
4
2
5
8
• Recommencer à partir du début tant que vous avez opéré au moins à un échange
MAP - UNS
110
5
12/03/2013
TRI À BULLE
Algorithme tri_à_bulle
{ faire remonter les plus grandes valeurs en haut d’un tableau T de N éléments. }
variables tab :
tableau [0, N-1] de entier
N, i, j, temp : entier
nouvel_echange : booleen
Début
répéter
nouvel_echange ←faux
pour i = 0 à N-1 faire
si T[ i ] > T[i+1] alors
temp ← T[ i +1]
T[i+1 ] ← T[ i ]
T[ i ] ← temp
nouvel_echange ← vrai
fsi
fpour
tant que nouvel_echange ==vrai
Fin
MAP - UNS
111
ALGORITHME D’INSERTION POSITION P
• Objectif : Ajouter un élément dans un tableau trié ou pas. Insertion n’est possible
que si il reste de la place dans le tableau. L’Insertion est un décalage à droite
des éléments du tableau
• Méthode : Insertion Soit T un tableau de taille de N éléments, On insère un
élément V à un position p
• Variable k positionnée en fin de tableau
5
1
4
2
8
p
• Copie de T[k] dans T[k+1] tant que k>=P
5
1
4
k
2
8
p
5
1
4
k
2
2
8
4
2
8
4
2
p
5
• Qd k=p ranger la valeur v en T[k]
• Incrémenter N
1
4
8
k
p
k
5
MAP - UNS
1
v
p
8
112
6
12/03/2013
INSERTION À UNE POSITION P
Algorithme INSERTION_POSITION_P
{ Insérer une valeur v à une position p dans un tableau T de N éléments et de taille S }
Constantes S= 20
variables T :
tableau [0, S-1] de entier
N, p , v, : entier
Début
{ Code d’initialisation des N éléments du tableau }
Afficher (« entrez val à insérer et position p}
Saisir (p); Saisir(v);
si N < S alors
pour k= N-1 à p pas -1 faire
T[k+1] ← T[k]
fpour
T[p] ← v
N ← N+1
sinon
Afficher («Insertion impossible »)
fsi
MAP - UNS
113
Fin
ALGORITHME D’INSERTION DANS
TABLEAU TRIÉ
• Objectif : Ajouter un élément dans un tableau trié ou pas. Insertion n’est possible
que si il reste de la place dans le tableau. L’Insertion est un décalage à droite
des éléments du tableau
• Méthode : Insertion Soit T un tableau de taille de N éléments triés , On insère un
élément V
• Variable k positionnée en fin de tableau
1
2
4
5
8
• Copie de T[k] dans T[k+1]
• tant que k>=0 && V>T[k]
k
1
2
4
5
8
8
k
1
2
4
5
5
8
4
5
8
4
5
8
k
• Qd T[k]<v ranger la valeur v en T[k+1]
• Incrémenter N
1
2
4
k
1
MAP - UNS
2
v
k
114
7
12/03/2013
INSERTION DANS UN TABLEAU TRIÉ
Algorithme INSERTION_V_dans_Tableau-Trié
{ Insérer une valeur v à une position p dans un tableau T de N éléments et de taille S rangé
par ordre croissant}
Constantes S= 20
variables T :
tableau [0, S-1] de entier
N, p , v, : entier
Début
{ Code d’initialisation des N éléments du tableau }
Afficher (« entrez val à insérer} Saisir(v);
si N < S alors
tant que k>= 0 && T[k] > val faire
T[k+1] ← T[k]
k ← k -1
fpour
T[k+1] ← v
N ← N+1
sinon
Afficher («Insertion impossible »)
MAP - UNS
115
fsi
Fin
ALGORITHME DE SUPPRESSION
POSITION P
• Objectif : Supprimer un élément dans un tableau trié ou pas. La suppression
est un décalage à gauche des éléments du tableau
• Méthode : Suppression Soit T un tableau de taille de N éléments, On
supprime un élément V à un position p
• Variable k positionnée à p+1
5
1
4
2
8
p
• Copie de T[k] dans T[k-1] tant que k<N
5
1
2
k
2
p
5
1
2
k
8
p
8
8
k
• Décrémenter N
MAP - UNS
8
12/03/2013
SUPPRESSION À UNE POSITION P
Algorithme SUPPRESSION_POSITION_P
{ Supprimer l’élément à une position p dans un tableau T de N éléments et de taille S }
Constantes S= 20
variables T :
tableau [0, S-1] de entier
N, p , v, : entier
Début
{ Code d’initialisation des N éléments du tableau }
Afficher (« entrez position p de l’élément à supprimer »)
Saisir (p);
pour k= p+1 à N – 1 faire
T[k-1] ← T[k]
fpour
N ← N-1
Fin
MAP - UNS
117
SUPPRESSION D’UNE VALEUR V
Algorithme SUPPRESSION_VALEUR_V
{ Supprimer une valeur v dans un tableau T de N éléments et de taille S }
variables T :
tableau [0, S-1] de entier
N, p=0 , v, k : entier
Début
{ Code d’initialisation des N éléments du tableau }
Afficher (« entrez la valeur à supprimer »)
Saisir (v);
tant que T[p] <> val && p < N-1 faire
p ← p +1
ftq
si T[p] == val alors
pour k= p+1 à N -1 faire
T[k-1] ← T[k]
fpour
N ← N-1
sinon
Afficher (« valeur non trouvée »)
fsi
MAP - UNS
Fin
118
9
Téléchargement