Algorithmes de tri et de recherche

Slides:



Advertisements
Présentations similaires
Prmt For imbriqués.
Advertisements

Tris.
Algorithmes et structures de données 9ème cours Patrick Reuter maître de conférences
Portée des variables VBA & Excel
Fonctions & procédures
DECLARATION DE VARIABLES
Les algorithmes arithmétiques
Les Algorithmes de tri.
3- Déclaration et accès aux objets
III- Les fonctions 1- Activité 02
II- Les structures de contrôle à condition d’arrêt
Programme d’une fête du fin de l’année
Les Structures de contrôles itératives
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
L’ interruption de boucle
1 Révisions. 2 Tableaux non contraints Déclaration du type : type Tvecteur = tableau ( intervalle dentiers) de entiers type Tvecteur is array (integer.
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Initiation à la programmation et algorithmique cours 3
Algorithmique -les fichiers-
Utilisation des tableaux
Qu’est-ce qu’un ordinateur ?
4.3. Fonctions mathématiques de base en Pascal Syntaxe Fonction
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
La structure conditionnelle simple
Les algorithmes: complexité et notation asymptotique
TP : Fichiers et Tableaux Séance N°2 Avril Application de Gestion de stock Partie 1 : les fichiers 1 Création dun fichier de 20 articles.
TP Fichiers et Tableaux Avril Un fichier Permet le stockage de données sur des supports de mémoire externes (donc les données ne seront pas perdues.
TP Enregistrements Avril Un enregistrement permet de regrouper des éléments ayant des types différents au sein dune même structure de données (chose.
Les tris.
Introduction à l’algorithmique
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
STRUCTURES DE DONNÉES Maxime CROCHEMORE
Les Algorithmes de Tri Introduction Tri par Sélection
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.

Structures alternative et répétitive

Animateur : Med HAIJOUBI
LANGAGE PASCAL Introduction rapide….
Les structures de données séquentielles contiguës
ALGORITHME DE TRI Le tri par insertion.
ALGORITHMIQUE Recherches : Tris : séquentielle, dichotomique
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Les Structures De Contrôle Itératives Complètes
1 Algorithmique et programmation en Itérations (boucles) Types numériques simples (suite)
Chapitre 6 Les traitements avancés
Algorithmique et programmation en
Problème de 8 reines Sachant que dans un jeu d'échecs, une dame peut pendre toute pièce se trouvant sur la même colonne ou sur la même ligne ou sur une.
Les variables et les types standard des données
Méthodes de tri.
Exemple à faire: N°2 Ecrire l’Algorithme et le Programme PASCAL qui affiche la somme de deux nombres entiers donnés.
Cours 4 - Trois algorithmes de recherche dans un tableau
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
Cours LCS N°4 Présenté par Mr: LALLALI
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Tutorat en bio-informatique Le 28 novembre Au programme… Algorithmes de tri dans un tableau (suite) Récursivité MAT1400.
Cours 5 - Trois algorithmes de tri d'un tableau
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Algorithmique Tableaux de données
Algorithmique Algorithmique  Pascal
Algorithmique Boucles et Itérations
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
L ES I NSTRUCTIONS I TÉRATIVES (L ES B OUCLES ) Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université A.Mira,
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
Transcription de la présentation:

Algorithmes de tri et de recherche Chapitre N°6: Algorithmes de tri et de recherche

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion 7 Trier = organiser et répartir un ensemble d’éléments selon un ou plusieurs critères 7 4 2 5 3 6 1 7 6 5 4 3 2 1

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Activité: Ecrire une analyse, un algorithme et la traduction en PASCAL d’un programme qui permet de trier un tableau T de n éléments dans l’ordre croissant. Démo: Principe: Parcourir le tableau (n-1) fois A chaque itération, chercher la valeur minimale et la placer au début de la partie non triée en la permutant avec la première case

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Analyse principale : Nom: Tri_selection Résultat= PROC Afficher (T, n) (T,n)= PROC Saisir (n) PROC Remplir (T, n) PROC Trier (T, n) Fin Tri_selection T.D.N.T: Type Tab=Tableau de 100 entiers T.D.O. globaux : Objet Type/Nature Rôle N entier Taille du tableau T Tab Tableau d’entiers Saisir procédure Saisie contrôlée de n Remplir Remplissage de T. Trier Afficher Affichage du tableau trié.

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Analyse de la procédure Saisir : DEF PROC Saisir (var x : entier)  Résultat= x x = [ ] Répéter n= donnée (" Saisir la taille du tableau : ") Jusqu’à ((x <= 100) et (x >=1)) Fin saisir Analyse de la procédure Remplir : DEF PROC Remplir (var T : Tab ; n: entier)  Résultat= T T = [ ] Pour i de 1 à n faire T[i]=Donnée ("Saisir l’élément numéro ° ", i, " : ") Fin pour Fin remplir T.D.O.Locaux: Objet Type/Nature Rôle i entier Compteur

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Analyse de la procédure Saisir : DEF PROC Saisir (var x : entier)  Résultat= x x = [ ] Répéter n= donnée (" saisir la taille du tableau : ") Jusqu’à (x <= 100) et (x >=1) Fin saisir Analyse de la procédure Remplir : DEF PROC Remplir (var T : Tab ; n: entier)  Résultat= T T = [ ] Pour i de 1 à n faire T[i]=Donnée ("saisir l’élément numéro ° ", i, " : ") Fin pour Fin remplir T.D.O.Locaux: Objet Type/Nature Rôle i entier Compteur

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Analyse de la procédure Trier : DEF PROC Trier (var T : Tab ; n: entier)  Résultat= T T= [ ] Pour i de 1 à n-1 faire pmin  FN Recherche_pmin (T, n, i) Si(T[i]#T[pmin]) alors PROC Permuter (T[i], T[pmin]) Fin si Fin pour Fin Trier T.D.O.Locaux: Objet Type/Nature Rôle i Entier compteur Permuter procédure Permuter les contenus de deux variables Recherche_pmin fonction Rechercher l’indice du minimum pmin entier Position du minimum

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Analyse de la fonction Recherche_pmin : DEF FN Recherche_pmin (T : Tab ; n: entier ; i : entier)  Résultat= Recherche_pmin Recherche_pmin  p p= [pi] Pour j de i+1 à n faire Si (T[p] > T[j]) alors p j Fin si Fin pour Fin Recherche_pmin T.D.O.Locaux: Objet Type/Nature Rôle j Entier Compteur p Position du minimum

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Analyse de la procédure Permuter: DEF PROC Permuter (Var a, b: Entier) Résultat = (a, b) (a, b) = Aux  a a  b b  Aux Fin Permuter T.D.O.Locaux: Objet Type/Nature Rôle Aux Entier Variable auxiliaire

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Analyse de la procédure Afficher: DEF PROC Afficher (var T : Tab ; n: entier)  Résultat= [ ] Pour i de 1 à n faire Ecrire (T[i]) Fin pour Fin Afficher T.D.O.Locaux: Objet Type/Nature Rôle i Entier compteur

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Algorithme du programme principal 0) Début Tri_selection 1) PROC Saisir (n) 2) PROC Remplir (T, n) 3) PROC Trier (T, n) 4) PROC Afficher (T, n) 5) Fin Tri_selection Algorithme de la procédure Saisir: 0) DEF PROC saisir (var x : entier)  1) Répéter Écrire (" Saisir la taille du tableau :  : ") Lire (x) Jusqu’à ((x <= 100) et (x >=1)) 2) Fin saisir

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Algorithme de la procédure Remplir: 0) DEF PROC Remplir (var T : Tab ; n : entier)  1) Pour i de 1 à n faire Ecrire ("Saisir l’élément numéro ° ", i, " : ") Lire (T [i]) Fin pour 2) Fin Remplir Algorithme de la procédure Trier: 0) DEF PROC Trier (var T : Tab ; n : entier) 1) Pour i de 1 à n-1 faire pmin  FN Recherche_pmin (T, n, i) si(T[i]#T[pmin]) alors PROC Permuter (T[i], T[pmin]) Fin si Fin pour 2) Fin Trier

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Algorithme de la fonction Recherche_pmin : 0) DEF FN Recherche_pmin (T : Tab ; n: entier ; i : entier)  1) [pi] Pour j de i+1 à n faire Si (T[p] > T[j]) alors p j Fin si Fin pour 2) Recherche_pmin  p 3)Fin Recherche_pmin Algorithme de la procédure Permuter: 0) DEF PROC Permuter (Var a, b: Entier) 1) Aux  a 2) a  b 3) b  Aux 4) Fin Permuter

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Algorithme de la procédure Afficher: 0) DEF PROC Afficher (var T : Tab ; n : entier)  1) Pour ide 1 à n faire Ecrire (T[i]) Fin pour 2) Fin Afficher

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Traduction PASCAL: Program Tri_selection; p :=i; Uses wincrt; For j: =i+1 to n do Type tab=array [1..100] of integer; If (T[j]<T[p]) then p:=j; recherche_pmin:=p; Var T : tab; n : integer ; Procedure Trier (var T: tab; n: integer); Procedure Saisir (var n: integer); Var i, pmin: integer; Begin Repeat For i:=1 to n-1 do Write (‘Saisir la taille du tableau :'); Readln (n); pmin:= recherche_pmin (T, n, i); If (T[j]<>T[pmin]) then Until ( n [2..100]); Permuter(T[i],T[pmin]); End; Procedure Remplir (var T: tab; var n: integer); Var i: integer; Procedure Afficher (T: tab; n:integer); For i: =1 to n do Writeln ('Le tableau trié est : '); Write (‘Saisir l’’élément numéro °',i,' :') ; Writeln (T[i]); Readln (T[i]); Begin { Programme Principal } Saisir(n); Procedure Permuter (var a: integer; var b: integer); Remplir (T, n); Var Aux : integer; Trier (T, n); Afficher(T, n); Aux:=a; End. a:=b; b:=Aux; Functionrecherche_pmin(T:tab;n:integer;i:integer):integer; Var p, j : integer;

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Principe: Parcourir le tableau tant de fois jusqu’à ce qu’il soit trié (aucune permutation faite) A chaque parcours: Comparer les éléments successifs et les permuter ,s’ils sont désordonnés Refaire l’action précédente jusqu’à l’avant dernier élément. Arrêter les itérations si aucune permutation n’est faite ( tableau trié) Démo:

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Analyse de la procédure Trier : DEF PROC Trier_bulles (var T : Tab ; n: entier)  Résultat = T T = [ ] Répéter echange  faux Pour i de 1 à n-1 faire Si (T[i] > T [i+1]) alors PROC Permuter (T[i], T [i+1]) echange  vrai Fin si Fin Pour nn-1 Jusqu'à ((n=1)ou(echange = faux)) Fin Trier T.D.O.Locaux: Objet Type/Nature Rôle i Entier compteur Permuter procédure Permuter les contenus de deux variables echange booléen Teste l‘état des permutations

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Algorithme de la procédure Trier : 0) DEF PROC Trier (var T : Tab ; n: entier)  1) Répéter echange  faux Pour i de 1 à n-1 faire Si(T[i] > T [i+1] ) PROC Permuter (T[i], T [i+1]) echange  vrai Fin si Fin Pour n:=n-1 Jusqu'à ((n=1)ou(echange = faux)) 2) Fin Trier

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Traduction Pascal de la procédure Trier : Procedure Trier (var T: tab; n: integer); Var echange: Boolean; i: integer; Begin Repeat echange: =false; For i: =1 to n-1 do If (T[i] > T [i+1] )then Permuter (T[i], T [i+1]); echange: =true; End; n:=n-1; Until ((n=1)or(echange = false));

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Principe: Consiste à prendre Les éléments de la liste un par un ,en commençant, par le deuxième élément puis insérer chacun dans sa bonne place de façon que les éléments traités forment une sous liste triée. Répéter ce traitement jusqu'à arriver au dernier. Démo:

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Analyse de la procédure Trier : DEF PROC Trier (var T : Tab ; n: entier)  Résultat = T T = [ ] Pour i de 2 à n faire v  T[i] j  i PROC Decaler_d(T,j,v) PROC Inserer(T,j,v) Fin Pour Fin Trier T.D.O.Locaux: Objet Type/Nature Rôle i Entier compteur v Elément à insérer j Position de l’élément à insérer Decaler_d Procédure Décale les éléments du tableaux supérieur à l’élément à insérer vers la droite Inserer Insérer un élément dans sa bonne position

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Analyse de la procédure Décaler_d : DEF PROC Decaler_d (VAR T:TAB; VAR p:Entier ; e:Entier) Résultat = T T=[ ]Tant que (T[p-1] > e) faire T[p]  T[p-1] p  p-1 Fin Tantque Fin Decaler_d Analyse de la procédure Inserer: DEF PROC Inserer (VAR T:TAB; p:Entier ; e:Entier) Résultat = T T[p]  e Fin Inserer

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Algorithme de la procédure Trier: 0) DEF PROC Trier (var T : Tab ; n: entier)  1) Pour i de 2 à n faire v  T[i] j  i PROC Decaler_d(T,j,v) PROC Inserer(T,j,v) Fin Pour 2) Fin Algorithme de la procédure Decaler_d : 0) DEF PROC Decaler_d (var T:TAB; var p:Entier ; e:Entier) 1) Tant que (T[p-1] > e) Répéter T[p]  T[p-1] p  p-1 Fin tantque 2) Fin PROC Decaler_d Algorithme de la procédure Inserer 0) DEF PROC Inserer (var T:TAB; p:Entier ; e:Entier) 1) T[p]  e; 2) Fin PROC Inserer :

Les méthodes de tri Tri par sélection Tri à bulle Tri par insertion Traduction Pascal de la procédure Trier: PROCEDURE Trier(n:INTEGER ; var T: TAB); VAR i,j,v: INTEGER; PROCEDURE Decaler_d(var T:TAB; var p:INTEGER;e:INTEGER); BEGIN WHILE T[p-1] > e DO T[p] := T[p-1]; p:= p-1 END; PROCEDURE Inserer(var T:TAB; p:INTEGER; e:INTEGER); T[p] := e; FOR i := 2 TO n DO v := T[i]; j := i; Decaler_d(T,j,v); Inserer(T,j,v);

Recherche séquentielle Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle Recherche dichotomique: Activité: Ecrire une analyse, un algorithme et la traduction Pascal d’un programme qui saisit un entier nature n suivit de n entiers à mettre dans un tableau T puis une valeur V, ensuite vérifier si V figure dans T u non. Démo: Principe: La recherche séquentielle vérifie l’existence d’un élément dans une série d’éléments. Elle consiste à parcourir la liste d’éléments un par un en les comparant avec la valeur recherchée jusqu’à trouver cette valeur ou atteindre la fin de la série.

Recherche séquentielle Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle Recherche dichotomique: T: 70 15 102 31 42 37 22 1 2 3 4 5 6 7 V: 37 70 15 102 31 42 37 22 1 2 3 4 5 6 7 37 existe dans le tableau T

Recherche séquentielle Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle Recherche dichotomique: T: 70 15 102 31 42 37 22 1 2 3 4 5 6 7 V: 19 70 15 102 31 42 37 22 1 2 3 4 5 6 7 19 n’existe pas dans le tableau T

Recherche séquentielle Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle Recherche dichotomique: Analyse principale : Résultat= Ecrire ("Existe= ", exist) exist  FN Recherche (T, n, v) V = PROC Saisie2 (v) T= PROC Remplir (T, n) n= PROC Saisie1 (n) Fin Recherche_sequentielle T.D.N.T: Type Tab=Tableau de 100 entiers T.D.O. globaux : Objet Type/Nature Rôle v entier Elément à rechercher n Taille du tableau T Tab Tableau d’entiers Saisie2 procédure Saisie de v (élément recherché) exist Booléen Résultat de la recherche Saisie1 Saisie contrôlée de n Remplir Remplissage de T.

Recherche séquentielle Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle Recherche dichotomique: Analyse de la fonction Recherche : DEF FN Recherche (T : Tab ; n, v: entier) : Booléen Résultat= Recherche Recherche  Trv Trv= [Trvfaux ; i 0] Répéter i  i+1 Si (T[i] = v) alors Trv vrai Fin si jusqu'à (( i = n ) ou ( Trv=vrai)) Fin Recherche T.D.O. locaux : Objet Type/Nature Rôle i Entier compteur Trv Booléen Résultat du recherche

Recherche séquentielle Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle Recherche dichotomique: Algorithme principale : 0)Début Recherche_sequentielle 1) PROC Saisie1 (n) 2) PROC Remplir (T, n) 3) PROC Saisie2 (v) 4) exist  FN Recherche (T, n, v) 5) Ecrire (" Existe= ", exist) 6) Fin Recherche_sequentielle Algorithme de la fonction Recherche : 0)DEF FN Recherche (T : Tab ; n, e: entier ;):Booléen 1) Trvfaux ; i 0 Répéter i  i+1 Si (T[i] = e) alors Trv  vrai Fin si jusqu'à ((i = n ) ou ( Trv=vrai)) 2) Recherche  Trv 3)Fin Recherche

Recherche séquentielle Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle Recherche dichotomique: Traduction PASCAL: Program Recherche_sequentielle; Uses wincrt; Type tab=array [1..100] of integer; Var T : tab; n, v: integer ; exist: Boolean; Procedure Saisie1 (var n: integer); Begin Repeat Write ('Donner la taille du tableau :'); Readln (n); Until n >0; End; Procedure Remplir (var T: tab; var n: integer); Var i: integer; For i:=1 to n do Write ('Donner l''élément n°',i,' :') ; Readln (T[i]); Procedure Saisie2(var v: integer); Write ('Donner l''élément recherché :'); Readln (v); Function Recherche (T: tab; n, v: integer): Boolean; Var Trv: Boolean; i: integer; Begin Trv:=false; i:=0; Repeat i:=i+1; if T[i] = v then Trv:= true; until (Trv=true) or (i=n); Recherche :=Trv; End; BEGIN Saisie1 (n); Remplir (T, n); Saisie2 (v); exist:= Recherche(T, n, v); Writeln (‘Existe = ', exist) End.

Recherche séquentielle : Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle : Recherche dichotomique: Activité: Ecrire une analyse, un algorithme et la traduction Pascal d’un programme qui saisit un entier nature n suivit de n entiers à mettre dans un tableau T puis une valeur V, ensuite vérifier si V figure dans T u non. Principe: La recherche dichotomique s’effectue à un tableau trié (Ordre croissant). On divise le tableau en deux parties égaux (à un élément prés). On compare l’élément à chercher avec l’élément du milieu Si elles ne sont pas égales, on s’intéresse uniquement à la partie contenant les éléments voulus et délaisse l’autre partie On recommence ces 3 étapes jusqu’à avoir un seul élément à comparer

Recherche séquentielle : Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle : Recherche dichotomique: T: 9 15 18 22 31 37 42 54 70 102 1 2 3 4 5 6 7 8 9 10 V: 15 9 15 18 22 31 37 42 54 70 102 1 2 3 4 5 6 7 8 9 10 15 existe dans le tableau T

Recherche séquentielle : Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle : Recherche dichotomique: T: 9 15 18 22 31 37 42 54 70 102 1 2 3 4 5 6 7 8 9 10 V: 50 9 15 18 22 31 37 42 54 70 102 1 2 3 4 5 6 7 8 9 10 50 n’existe pas dans le tableau T

Recherche séquentielle Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle Recherche dichotomique: Analyse de la fonction Recherche : DEF FN Recherche (T : Tab ; n, v: entier) : Booléen Résultat= Recherche Recherche  Trv A= [Trvfaux ; pini 1 ; pfinn] Répéter pmil (pini+ pfin) div 2 Si (T [ pmil] = v) alors Trv  vrai Sinon si (T[pmil] < v) alors pini pmil +1 Sinon Pfin pmil - 1 fin si jusqu'à ((pini > pfin) ou (Trv=vrai)) Fin Recherche T.D.O. locaux : Objet Type/Nature Rôle pini Entier Compteur (position de début) pfin Compteur (position de fin) pmil Compteur (position de milieu) Trv Booléen Résultat du recherche

Recherche séquentielle Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle Recherche dichotomique: Algorithme de la fonction Recherche : 0) DEF FN Recherche (T : Tab ; n, v: entier ;): Booléen   1) Trvfaux ; pini 1;pfin  n ; Répéter pmil  (pini + pfin) div 2 Si (T [p pmil mil] = v) alors Trv vrai Sinon si (T[pmil] < v) alors pini pmil +1 Sinon Pfin pmil - 1 Fin si Jusqu’à (pini > pfin) ou (Trv=vrai) 2) Recherche  Trv 3)Fin Recherche

Recherche séquentielle Recherche dichotomique: Algorithmes de recherche: Recherche séquentielle Recherche dichotomique: Traduction PASCAL: Program Uses wincrt; Recherche_dichotomique; Type tab=array [1..100] of integer; Var T : tab; n, v: integer ; exist: Boolean; Procedure Saisie1 (var n: integer); Begin Repeat Write ('Donner la taille du tableau :'); Readln (n); Until n >0; End; Procedure Remplir (var T: tab; var n: integer); Var i: integer; For i:=1 to n do Write ('Donner l''élément n°',i,' :') ; Readln (T[i]); Procedure Saisie2(var v: integer); Write ('Donner l''élément recherché :'); Readln (v); function recherche(t:tab; n,v:integer):boolean; var Trv :boolean; pmil,pfin,pini:integer; begin Trv :=false; pini:=1; pfin:=n; repeat pmil:=(pini + pfin) div 2; if T[pmil] = v then Trv := true else if ( T[pmil] < v) then pini:=pmil+1 else pfin := Pmil - 1; until (Trv =true) or (pini>pfin); recherche:= Trv; End; BEGIN Saisie1 (n); Remplir (T, n); Saisie2 (v); exist:= Recherche(T, n, v); Writeln (‘Existe = ', exist) End.

Recherche dichotomique: Traduction PASCAL: Program Recherche_dichotomique; Uses wincrt; Type tab=array [1..100] of integer; Var T : tab; n, v: integer ; trv: Boolean; Procedure Saisie1 (var n: integer); Begin Repeat Write ('Donner la taille du tableau :'); Readln (n); Until n >0; End; Procedure Remplir (var T: tab; var n: integer); Var i: integer; For i:=1 to n do Write ('Donner l''élément n°',i,' :') ; Readln (T[i]); Procedure Saisie2(var v: integer); Write ('Donner l''élément recherché :'); Readln (v); function recherche(t:tab; n,v:integer):boolean; var Trv :boolean; mil,g,d:integer; begin Trv :=false; g:=1; d:=n; repeat mil:=(g + d) div 2; if T[mil] = v then Trv := true else if ( T[mil] < v) then g:=mil+1 else d := mil - 1; until (Trv =true) or (g>d); recherche:= Trv; End; BEGIN Saisie1 (n); Remplir (T, n); Saisie2 (v); exist:= Recherche(T, n, v); Writeln (‘Existe = ', exist) End.