Cours d'algorithme

Les méthodes de Tris et de recherche


Les algorithmes de Tri

● Tris élémentaires
Le tri par sélection.
Le tri par insertion.
Le tri a bulles.

● Tris avancés
Tri rapide.
...

Tri par sélection

● On cherche l'élément de plus petite valeur pour l'échanger avec l'élément en première position; puis on cherche l'élément ayant la deuxème plus petite valeur pour l'échanger avec l'élément en deuxième position; et ainsi de suite.

Tableau de trie par sélection

Remarque:

● Il faut:
1 boucle pour parcourir le tableau et sélectionner tous les éléments.
1 boucle pour rechercher le minimum parmi les éléments non triés.

● Supposons que le tableau est noté T et sa taille N.


Algorithme sel_sort
Variables indice, i, j, Tableau T[N] : entier
Début
Pour i De 0 A N-2 Faire
indice ← i
Pour j De i+1 A N-1 Faire
Si(T[j] < T[indice]) Alors
indice ← j
FinSi
FinPour
temp ← T[indice]
T[indice] ← T[i]
T[i] ← temp
FinPour
Fin

Tri par insertion

● On considère les éléments les uns près en insérant chacun à sa place parmi les élément déjà triés.

Tableau de trie par insertion

Remarque:

● Il faut:
1 boucle pour parcourir le tableau et sélectionner tous les éléments à insérer.
1 boucle pour déclarer les éléments plus grand que l'éléments à insérer.
insérer l'élément.

● Supposons que le tableau est noté Tab et sa taille N.


Algorithme ins_sort
Variables mem, i, j, Tableau T[N] : entier
Début
Pour i De 1 A N-1 Faire
mem ← T[i]
j ← i
TantQue ( j > 0 et T[j-1] > mem ) Faire
T[j] ← T[j-1]
j ← j-1
FTQ
T[j] ← mem
FinPour
Fin

Tri à bulles

● On parcours asutant de fois le tableau en permutant 2 éléments adjacents mal classés qu'il le faut pour que le tableau soit trié.

Tableau de trie à bulles

Remarque:

● Il faut:
1 boucle pour parcourir tout le tableau et sélectionner les éléments un à un.
1 boucle pour permuter les éléments adjacents.

Algorithme bll_sort
Variables temp, i, Tableau T[N] : entier
Permut : boolean
Début
Permut ← Vrai
TantQue (Permut) Faire
Permut ← Faux
Pour i De 1 A N-2 Faire
Si (T[i] > T[i+1]) Alors
temp ← T[i]
T[j] ← T[j-1]
T[i] ← T[i+1]
T[i+1] ← temp
FinSi
FinPour
FTQ
Fin

Tri par comptage

● Le tri par comptage consiste pour chaque élément du tableau a compter combien d'éléments sont plus petits que lui, grâce a ce chiffre on connait sa position dans le tableau résultat.

● Liste initiale:
52 10 1 25 62 3 8 55 4 23
● Poids du mot:
7 4 0 6 9 1 3 8 2 5
● Position:
8 5 1 7 10 2 4 9 3 6

● Ecrire l'algorithme de Tri par comptage Pour réaliser ce tri, utilisez plusieurs tableaux.


Algorithme cmp_sort
Variables i, j, s, Tableau Poids[N], Tableau T[N] : entier
Début
// Remplissage du tableau Poids par les positions
Pour i De 0 A N-1 Faire
Poids[i] ← 1
Pour j De 0 A N-1 Faire
Si (T[j] < T[i]) Alors
Poids[i] ← Poids[i] + 1
FinSi
FinPour
FinPour
// Elimination des positions doubles du tableau Poids
Pour i De 0 A N-1 Faire
Pour j De 0 A N-1 Faire
Si ((Poids[i] = Poids[j]) et (i <> j)) Alors
Pour s De 0 A N-1 Faire
Si (Poids[j] < Poids[s]) Alors
Poids[s] ← Poids[s] + 1
FinSi
FinPour
Poids[j] ← Poids[j] + 1
FinSi
FinPour
FinPour
// Tri des éléments dans le tableau temporaire X
Pour i De 0 A N-1 Faire
X[Poids[i]] ← T[i]
FinPour
// Copie des éléments triés dans T
Pour i De 0 A N-1 Faire
T[i] ← X[i]
FinPour
Fin

Les méthodes de Recherche Rapide

Recherche séquentielle

● Le principe de l'algorithme de recherche séquentielle consiste à parcourir un tableau d'éléments dans l'ordre de ses indices jusqu'à ce qu'un élément recherché soit trouvé ou bien que la fin du tableau soit atteinte et le rang (indice) de l'élément est alors retourné.

Recherche dichotomique

● L'algorithme de recherche dichotomique est un algorithme efficace et rapide pour la recherche d'un élément dans un tableau trié. Le principe de cet algorithme consiste à diviser le tableau en deux parties et à comparer la valeur recherchée avec l'élément situé au milieu du tableau (l'élément médian).

Si la valeur recherchée correspond à l'élément médian, alors l'algorithme s'arrête et renvoie l'indice de cet élément. Sinon l'algorithme va répéter la recherche uniquement dans la partie qui peut contenir la valeur recherchée.