Vous êtes sur la page 1sur 9

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 : T [0, N-1], val entier
n, val, indice : entier
Début
indice ←0
tant que ( val <> T[indice] && indice < N-1) faire
indice ←indice + 1
ftq 7 1 15 8 2
si T[indice] = val alors
afficher( " l'élément se trouve en : » indice);
sinon
afficher( « Elément non présent " );
fsi

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 0 2 7 8 9

MAP - UNS 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 : tableau [0, N-1] de entier
N, i, j, indiceMin, ValMin : entier
Début
pour i = 0 à N-2 faire 7 8 9 2 0
indiceMin ← i
i=0 i=1
ValMin ← T[i]
pour j = i +1 à N-1 faire
7 8 9 2 0
si T[j] < ValMin alors
indiceMin ← j j=1 j=2 j=3 j=4
ValMin ← T[j]
fsi
fpour indiceMin=0 ValMin=7
indiceMin=3 ValMin=2
T[indiceMin] ← T[i] { Echange des deux valeurs }
IndiceMin=4 ValMin=0
T[i] ← ValMin T[0]=0
fpour T[4]=7
Fin MAP - UNS 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 1 4 2 8
• Comparer 2ème élément avec 3ème . Si 2er >3ème , échanger les deux éléments

1 5 4 2 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 k
• Copie de T[k] dans T[k+1] tant que k>=P
5 1 4 2 8 8
p k
5 1 4 2 2 8
p k

• Qd k=p ranger la valeur v en T[k] 5 1 4 4 2 8


• Incrémenter N p
k
5 1 v 4 2 8
MAP - UNS 112
p

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
k
• Qd T[k]<v ranger la valeur v en T[k+1] 1 2 4 4 5 8
• Incrémenter N
k
1 2 v 4 5 8

MAP - UNS
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 »)
fsi MAP - UNS 115
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 k
• Copie de T[k] dans T[k-1] tant que k<N
5 1 2 2 8
p k
5 1 2 8 8
p 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 118
Fin

Vous aimerez peut-être aussi