Méthodes de Recherche et Tri, Study notes of Algorithms and Programming

Cours de Algo de Mme Hind Elouedi pour L1-TI

Typology: Study notes

2025/2026

Uploaded on 01/26/2026

tesnim-elloumi
tesnim-elloumi 🇹🇳

12 documents

1 / 6

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Hind Elouedi Page 1
Chapitre 8 : Algorithmes de recherche et de Tri
I. Introduction
On va effectuer les recherches et les tris sur un tableau à une dimension d’entiers. Soit le tableau T
défini de la manière suivante :
Constante
dim = 100
Type
Tab = Tableau[1..dim] de Entier
Variable
T : Tab
L'accès à un élément du tableau se fait en désignant l'indice de l’élément, soit T[i], avec 1 i n.
II. Algorithmes de recherche
Les algorithmes de recherche qu’on va élaborer se feront sur des tableaux unidimensionnel (vecteur).
Il s’agit de chercher un élément dans un tableau, deux situations peuvent se présenter :
Soit on connaît l'indice de la case où figure l’élément. Il suffit alors de vérifier que le contenu est
bien celui que l'on recherche.
Soit on connaît le contenu de la case mais pas son indice, et à ce moment il faut chercher cet indice.
Il paraît évident que la première recherche est très simple, c’est plutôt la deuxième qui sera
présenter et ceci de deux techniques différentes :
Recherche séquentielle.
Recherche dichotomique.
II.1. Recherche séquentielle
La recherche d'une information est une opération fréquemment rencontrée dans les traitements des
vecteurs. Le problème posé consiste à chercher un élément dans le tableau à condition qu'il soit de
même type que les éléments du tableau. Cet élément peut apparaître zéro, une ou plusieurs fois dans
le vecteur. Soient le tableau T défini précédemment et un entier E à rechercher dans ce tableau. Cette
recherche pourra être appliquée à n'importe quel type d'élément. On se trouve alors devant deux cas
possibles :
Cas de recherche séquentielle dans un vecteur non trié (non ordonné).
Cas de recherche séquentielle dans un vecteur trié (ordonné).
a. Recherche séquentielle dans un vecteur non trié
La technique de recherche séquentielle d'un élément dans un vecteur non trié consiste à passer en
revue les éléments jusqu'à ce qu'on trouve le bon ou que le vecteur ait été entièrement parcouru.
Le traitement se termine dans les deux cas suivants :
Si on trouve l'élément qu'on cherche, et on se contentera dans ce cas de la première occurrence
de l'élément s'il apparaît plusieurs fois dans le tableau.
Si on a parcouru tous les éléments du tableau et on n'a pas trouvé l'élément recherché.
Algorithme 1 : Soit la fonction Rech1 qui recherche un élément dans un tableau et qui retourne sa
position dans le tableau, à défaut -1.
pf3
pf4
pf5

Partial preview of the text

Download Méthodes de Recherche et Tri and more Study notes Algorithms and Programming in PDF only on Docsity!

Chapitre 8 : Algorithmes de recherche et de Tri

I. Introduction

On va effectuer les recherches et les tris sur un tableau à une dimension d’entiers. Soit le tableau T défini de la manière suivante : Constante dim = 100 Type Tab = Tableau [1..dim] de Entier Variable T : Tab L'accès à un élément du tableau se fait en désignant l'indice de l’élément, soit T[i] , avec 1in.

II. Algorithmes de recherche

Les algorithmes de recherche qu’on va élaborer se feront sur des tableaux unidimensionnel (vecteur). Il s’agit de chercher un élément dans un tableau, deux situations peuvent se présenter :  Soit on connaît l'indice de la case où figure l’élément. Il suffit alors de vérifier que le contenu est bien celui que l'on recherche.  Soit on connaît le contenu de la case mais pas son indice, et à ce moment il faut chercher cet indice. Il paraît évident que la première recherche est très simple, c’est plutôt la deuxième qui sera présenter et ceci de deux techniques différentes :  Recherche séquentielle.  Recherche dichotomique. II.1. Recherche séquentielle La recherche d'une information est une opération fréquemment rencontrée dans les traitements des vecteurs. Le problème posé consiste à chercher un élément dans le tableau à condition qu'il soit de même type que les éléments du tableau. Cet élément peut apparaître zéro, une ou plusieurs fois dans le vecteur. Soient le tableau T défini précédemment et un entier E à rechercher dans ce tableau. Cette recherche pourra être appliquée à n'importe quel type d'élément. On se trouve alors devant deux cas possibles :  Cas de recherche séquentielle dans un vecteur non trié (non ordonné).  Cas de recherche séquentielle dans un vecteur trié (ordonné). a. Recherche séquentielle dans un vecteur non trié La technique de recherche séquentielle d'un élément dans un vecteur non trié consiste à passer en revue les éléments jusqu'à ce qu'on trouve le bon ou que le vecteur ait été entièrement parcouru. Le traitement se termine dans les deux cas suivants :  Si on trouve l'élément qu'on cherche, et on se contentera dans ce cas de la première occurrence de l'élément s'il apparaît plusieurs fois dans le tableau.  Si on a parcouru tous les éléments du tableau et on n'a pas trouvé l'élément recherché. Algorithme 1 : Soit la fonction Rech 1 qui recherche un élément dans un tableau et qui retourne sa position dans le tableau, à défaut - 1.

Fonction Rech 1 ( Don T : Tab , Don n : Entier , Don E : Entier ) : Entier Variable Indice, pos : Entier Ok : Booléen Début Indice  1 Ok  Faux Pos  - 1 TantQue (Indice  n) Et ( Non Ok) Faire Si (T[Indice] = E) Alors Ok  Vrai Pos  Indice Sinon Indice  Indice + 1 FinSi FinTantQue Rech 1  Pos -- ou bien Retourner (Pos) Fin Algorithme 2 : Transformation de la fonction Rech 1 en une procédure Rech 2 qui retourne deux résultats, la position pos de l’élément et une valeur booléenne Ok. Procédure Rech 2 ( Don T : Tab , Don n : Entier , Don E : Entier , Res Ok : Booléen , Res pos : Entier ) Variable Indice : Entier -- Indice de parcours Début Indice  1 Ok  Faux Pos  - 1 TantQue (Indice  n) Et ( Non Ok) Faire Si (T[Indice] = E) Alors Ok  Vrai Pos  Indice Sinon Indice  Indice + 1 FinSi FinTantQue Fin b. Recherche séquentielle dans un vecteur trié Dans une recherche séquentielle dans un tableau trié, le traitement se termine dans les 2 cas suivants :  Si on trouve l'élément qu'on cherche.  Si on a T[Indice] > E. Dans ce cas, on peut être sûr de ne plus trouver l'élément recherché. Algorithme 3 : Soit la fonction Rech3 qui permet d'effectuer cette opération de recherche : Fonction Rech3 ( Don T : Tab , Don n : Entier , Don E : Entier ): Entier Variable Indice : Entier --indice de parcours Début Indice  1 Si (E  T[n]) Ou (E  T[1]) Alors Rech3  - 1 Sinon TantQue (E  T[Indice]) Faire Indice  Indice + 1 FinTantQue Si (T[Indice] = E) Alors Rech3  Indice Sinon Rech3  - 1 FinSi FinSi Fin

II. Algorithmes de tri

I.1 Notion de tri Pour faciliter et accélérer la recherche d’un élément quelconque, il est préférable d’avoir des éléments ordonnés stockés dans une structure de données appropriée (un tableau par exemple). On désigne par tri , l'opération qui consiste à ordonner un ensemble d'éléments selon un critère bien déterminé ou ce qu'on appelle clé et suivant une relation d'ordre (ordre croissant ou décroissant). Dans ce qui suit, on présentera seulement les algorithmes de tri les plus connus. Ces algorithmes qui peuvent être appliqués sur des tableaux ayant n'importe quel type de base. I.1. Tri par sélection a. Principe : Le principe du tri par sélection consiste à sélectionner l'élément dont la valeur est la plus basse (le minimum), puis échanger la valeur de cet élément avec le premier élément du tableau. Le traitement se poursuit en cherchant le minimum parmi ceux qui restent : c'est à dire à partir du deuxième élément du tableau puis faire l'échange avec le deuxième élément jusqu'à atteindre T[n-1] et T[n]. b. Algorithme : Procédure Tri_Sélection (DonRes T : Tab , Don n : Entier) Variable i, k, Min : Entier Début Pour i de 1 à (n-1) Faire k  Minimum (T, i, n) --retourne l’indice du plus petit élément du vecteur T[i]..T[N] Si (T[k]  T[i]) Alors --pas d’échange (en cas d’égalité) Min  T[k] T[k]  T[i] T[i]  Min FinSi FinPour FinFonction Minimum Fonction Minimum (Don T : Tab ; Don Binf : Entier, Don n : Entier) : Entier --T est un vecteur d’entiers (non trié). n est la taille du vecteur T (n > 0).

--Binf est la borne inférieure du tableau à traiter (0 < Binf  n)

Variable i, m : Entier Début m  Binf Pour i de (Binf+1) à n Faire Si (T[i]  T[m]) Alors m  i FinSi FinPour Minimum  m Fin

I.3. Tri par insertion a. Principe : Le principe du tri par insertion consiste à placer l'élément T[i] du tableau (2  i  n) à la bonne place , c'est à dire l' insérer parmi les éléments déjà ordonnés du sous-vecteur T[1..i-1]. Chaque insertion se fait par comparaisons et décalages successifs et a pour conséquence d'agrandir le sous- vecteur ordonné d'un élément. b. Algorithme Procédure Tri_Insertion (Var T : Tab , Don n : Entier) --T est un vecteur d’entiers non trié. n est la taille du vecteur T (n > 1). -- T est un vecteur d’entiers trié de taille n (tri par insertion) Variable i : Entier --indice de parcours. j : Entier --indice de recherche de la bonne place. Aux : Entier --variable intermédiaire contenant l’élément à insérer. Ok : Booléen --variable booléenne pour sortir de la boucle TantQue. Début Pour i de 2 à n Faire Aux  T[i] j  i - 1 Ok  (Aux < T[j]) TantQue ((j  0) Et Ok) Faire Si (Aux  T[j]) Alors T[j+1]  T[j] j  j - 1 Sinon Ok  Faux --valeur d'arrêt FinSi FinTantQue Si (i  j+1) Alors T[j+1]  Aux FinSi FinPour Fin