Les algorithmes de tri et de recherche

Document Sample
Les algorithmes de tri et de recherche Powered By Docstoc
					 ChapIV : Les algorithmes de tri et de recherche                       Prof : Hichem Klouz

           ChapIV : Les algorithmes de tri et de recherche
I- Le tri d’un tableau
1-Définition
  Un algorithme de tri est un algorithme qui permet d’organiser un ensemble d’objets selon un
  ordre déterminé(croissant ou décroissant).
  Il existe plusieurs algorithmes de tri exemple d’algorithme : - tri par sélection
                                                                - tri à bulles
                                                                - tri par insertion
  2-Les méthodes de tri
  a-Tri par sélection
  Activité1 :
  Ecrire une spécification et un algorithme d’un programme qui permet de trier un tableau de N
  entiers avec N <6 dans un ordre croissant. Ensuite afficher les éléments triés du tableau.
  Principe du tri par sélection :
      1) Cherche l’indice de la plus petite valeur du tableau
      2) Permuter cette valeur avec le premier élément du tableau
      3) Chercher le second indice minimal du tableau
      4) Permuter sa valeur avec le second élément du tableau
      5) Refaire la même démarche jusqu’à atteindre la fin du tableau
  Exécution manuelle d’un exemple :
  Exemple:
  9        4        8        1      7
  1        4        8        9      7
  1        4        7        9      8
  1        4        7        8      9
  Décomposition modulaire :
 On peut représenter la décomposition du problème comme suit :


                                            Tri_select
                                                                               Affichage
        Lecture d’un
          entier N
                                                                                     procédure

   procédure               Remplissage de                        Tri
                              tableau

                                                                   procédure
                             procédure

                                                  Indice_Min                      Permutation


                                                  fonction                           procédure




                                                                                            1
 ChapIV : Les algorithmes de tri et de recherche       Prof : Hichem Klouz


La spécification du programme principal:
 Résultat : Affichage (T, N)
 Traitement : Tri(T, N)
              Remplissage(T, N)
              Lecture (N)
L’algorithme du programme principal:
 0) Début Tri_select
 1) Lecture (N)
 2) Remplissage (T, N)
 3) Tri (T, N)
 4) Affichage (T, N)
 5) Fin Tri_select
T.D.N.T
             Types
 Tab = Tableau de 5 entiers


 Tableau de Déclaration des Objets Globaux

 Objets                           Types            Rôles
 T                                Tab
 N                                Entier
 Lecture                          Procédure        Lecture de N
 Remplissage                      Procédure        Remplissage de T
 Tri                              Procédure        Tri de T
 Affichage                        Procédure        Affichage de T

 La spécification de la procédure Tri:
  Résultat : T
  Traitement : Pour i de 1 à N-1 faire
                 Min  Indice_Min(T, N, i)
                 Si Min<>i alors
                 Permutation(T[i], T[Min])
                 Fin si
                 Fin Pour
 L’algorithme de la procédure Tri:
 0) Procédure Tri (Var T : Tab ; N : entier)
 1) Pour i de 1 à N-1 faire
    Min  Indice_Min(T, N, i)
    Si Min<>i alors
    Permutation(T[i], T [Min])
    Fin si
    Fin Pour
 2) Fin Tri

                                                                         2
ChapIV : Les algorithmes de tri et de recherche                       Prof : Hichem Klouz



Tableau de Déclaration des Objets Locaux :

Objets                            Types                            Rôles
Min                               Entier                           Le minimum
i                                 Entier                           Compteur
Indice_Min                        Fonction
Permutation                       Procédure
La spécification de la fonction Indice_Min:
 Résultat : Indice_Min
 Traitement : ind  i
             Pour j de ( i+1) à N faire
               Si T[ind] > T[j] alors
      ind j
     fin si
    fin pour
    Indice_Minind
L’algorithme de la fonction Indice_Min:
0) Fonction Indice_Min ( T : Tab ; N :entier ;i :entier) :entier
1) indi
2) Pour j de (i+1) à N faire
    si T[j]< T[ind] alors
    ind j
   fin si
   fin pour
3) Indice_Minind
4) Fin Indice_Min
Tableau de Déclaration des Objets Locaux :

Objets                            Types                            Rôles
j                                 Entier                           Compteur
ind                               Entier
La spécification de la procédure Permutation :
 Résultat : valeurs permutés
 Traitement : c  x
              xy
              y c
L’algorithme de la procédure Permutation :
0) Procédure Permutation (Var x ,y :entier)
1) c  x
2)x  y
3)yc
4) Fin Permutation
Tableau de Déclaration des Objets Locaux :

Objets        Types       Rôles
c             Entier
                                                                                        3
 ChapIV : Les algorithmes de tri et de recherche                Prof : Hichem Klouz



 La spécification de la procédure Lecture:
 Résultat : N
 Traitement : Répéter
             N = donnée (‘’ donner un entier inférieur à 6’’)
             Jusqu'à N < 6
L’algorithme de la procédure Lecture:
 0) Procédure Lecture (Var N : entier)
 1) Répéter
     Ecrire (‘’ donner un entier inférieur à 6’’)
     Lire (N)
    Jusqu’à N<6
2) Fin Lecture
 La spécification de la procédure Remplissage:
 Résultat : T
 Traitement : Pour i de 1 à N faire
              T [ i ] = donnée (‘’ donner l’élément N° ‘’, i)
              Fin pour
L’algorithme de la procédure Remplissage:
 0) Procédure Remplissage (Var T : Tab ; N : entier)
 1) Pour i de 1 à N do
            Ecrire (‘’ donner l’élément N° ‘’, i)
            Lire (T[ i ])
          Fin pour
2) Fin Remplissage
 T. D .des Objets Locaux :

 Objets      Types         Rôles
 i           Entier        Compteur


 La spécification de la procédure Affichage :
 Résultat : Affichage des éléments de T
 Traitement : Pour i de 1 à N faire
                Ecrire(T[i])
              Fin pour
 L’algorithme de la procédure Affichage:
 0) Procédure Affichage (T :Tab ;N :entier)
 1) Pour i de 1 à N faire
     Ecrire(T[i])
   Fin pour
 2) Fin Affichage
 T. D .des Objets Locaux :

 Objets      Types         Rôles
 i           Entier        Compteur




                                                                                  4
 ChapIV : Les algorithmes de tri et de recherche                      Prof : Hichem Klouz



 b-Tri par Insertion
 Activité2 :
 Ecrire une spécification et un algorithme d’un programme qui permet de trier un tableau de N
 caractères avec N <6 dans un ordre croissant. Ensuite afficher les éléments trié du tableau.
 Principe du tri par insertion :
     1) Supposer que le premier élément du tableau est trié
     2) Chercher la position d’insertion du 2ème élément du tableau
     3) Chercher la position d’insertion du 3ème élément du tableau
     4) Faire un décalage pour placer l’élément dans la bonne position
     5) Refaire la même démarche jusqu’à atteindre la fin du tableau
 Exécution manuelle d’un exemple :
 Exemple:
 B       c       F        a        A
 Décomposition modulaire :
 On peut représenter la décomposition du problème comme suit :


                                           Tri_inser
                                                                              Affichage
     Saisie d’un entier
             N
                                                                                    procédure

  procédure               Remplissage de                        Tri
                             tableau

                                                                  procédure
                            procédure

                                                               Décalage


La spécification du programme principal:                      procédure
 Résultat : Affichage (T, N)
 Traitement : Tri(T, N)
              Remplissage(T, N)
              Lecture (N)
L’algorithme du programme principal:
 0) Début Tri_inser
 1) Lecture (N)
 2) Remplissage (T, N)
 3) Tri (T, N)
 4) Affichage (T, N)
 5) Fin Tri_inser
T.D.N.T
              Types
                                                                                           5
ChapIV : Les algorithmes de tri et de recherche                    Prof : Hichem Klouz

Tab = Tableau de 5 caractères


Tableau de Déclaration des Objets Globaux

Objets                          Types                          Rôles
T                               Tab
N                               Entier
Lecture                         Procédure                      Lecture de N
Remplissage                     Procédure                      Remplissage de T
Tri                             Procédure                      Tri de T
Affichage                       Procédure                      Affichage de T
La spécification de la procédure Tri:
 Résultat : T
 Traitement : Pour i de 2 à N faire
              V  T[i]
              Décalage(T, i , k)
              T[k] V
              Fin pour
L’algorithme de la procédure Tri:
0) Procédure Tri (Var T : Tab ; N :entier)
1) Pour i de 2 à N faire
   V  T[i]
   Décalage(T, i , k)
   T[k] V
Fin pour
2) Fin Tri
T. D .des Objets Locaux :

Objets      Types         Rôles
i           Entier        Compteur
k           Entier
V           Caractère
Décalage    Procédure
La spécification de la procédure Décalage:
 Résultat : T
 Traitement : k  i
              MT[i]
              Tant que T[k-1] > M faire
              T[k] T[k-1]
                kk-1
                Fin tant que

L’algorithme de la procédure Décalage:
0) Procédure Décalage (Var T : Tab ;i :entier;Var k :entier)
1)ki
                                                                                     6
ChapIV : Les algorithmes de tri et de recherche              Prof : Hichem Klouz
2) MT[i]
3) Tant que T[k-1] > M faire
  T[k] T[k-1]
  kk-1
  Fin tant que
 4) Fin Décalage
T. D .des Objets Locaux :

Objets      Types         Rôles
M           caractère


La spécification de la procédure Saisie:
 Résultat : N
 Traitement : Répéter
              N=donné(« donnez la taille du tableau »)
             Jusqu’à N<6
L’algorithme de la procédure Saisie:
0) Procédure Saisie (Var N :entier)
1) Répéter
   Ecrire(« donnez la taille du tableau »)
   Lire(N)
   Jusqu’à N<6
2) Fin saisie
La spécification de la procédure Remplissage:
 Résultat : T
 Traitement : pour i de 1 à N faire
              T[i]=donné(« donnez un élément du tableau »)
              Fin pour

L’algorithme de la procédure Remplissage:
0) Procédure Remplissage (Var T :Tab ;N :entier)
1)pour i de 1 à N faire
  Ecrire(« donnez un élément du tableau »)
  Lire(T[i])
  Fin pour
2)Fin Remplissage
T. D .des Objets Locaux :

Objets      Types         Rôles
i           Entier        Compteur



La spécification de la procédure Affichage :
Résultat : Affichage des éléments de T
Traitement : Pour i de 1 à N faire
                                                                               7
 ChapIV : Les algorithmes de tri et de recherche                         Prof : Hichem Klouz
                Ecrire(T[i])
              Fin pour
 L’algorithme de la procédure Affichage :
 0) Procédure Affichage (T :Tab ;N :entier)
 1) Pour i de 1 à N faire
     Ecrire(T[i])
   Fin pour
 2) Fin Affichage
 T. D .des Objets Locaux :

 Objets       Types        Rôles
 i            Entier       Compteur


 c-Tri à bulle
 Activité 3 :
 Refaire l’activité 2 en utilisant la méthode de tri à bulle et en mettant les éléments du tableau
 dans l’ordre décroissant.
 Principe du tri à bulles :
    1) Comparer le 1er et le 2ème élément du tableau, les permuter s’ils ne sont pas dans l’ordre
    2) Refaire l’étape1 jusqu’à l’avant dernière case
    3) Refaire les deux étapes précédentes jusqu’à ce qu’il n’y a plus de permutation
 Exécution manuelle d’un exemple :
 Exemple:
 B       c         F       a        A
 Décomposition modulaire :
 On peut représenter la décomposition du problème comme suit :

                                            Tri_bulles
                                                                                  Affichage
     Saisie d’un entier
             N
                                                                                         procédure

  procédure                Remplissage de                          Tri
                              tableau

                                                                      procédure
                               procédure

                                                                 Permutation


                                                                  procédure
La spécification du programme principal:
 Résultat : Affichage (T, N)
 Traitement : Tri(T, N)
              Remplissage(T, N)
              Lecture (N)


                                                                                                8
 ChapIV : Les algorithmes de tri et de recherche       Prof : Hichem Klouz



L’algorithme du programme principal:
 0) Début Tri_bulles
 1) Lecture (N)
 2) Remplissage (T, N)
 3) Tri (T, N)
 4) Affichage (T, N)
 5) Fin Tri_bulles
T.D.N.T
              Types
 Tab = Tableau de 5 caractères


 Tableau de Déclaration des Objets Globaux

 Objets                          Types             Rôles
 T                               Tab
 N                               Entier
 Lecture                         Procédure         Lecture de N
 Remplissage                     Procédure         Remplissage de T
 Tri                             Procédure         Tri de T
 Affichage                       Procédure         Affichage de T
 La spécification de la procédure Tri:
  Résultat : T
  Traitement : Répéter
               Permut  Faux
               Pour i de 1 à N-1 faire
               Si T[i] < T[i+1] alors
               Permutation(T[i], T[i+1])
                 Permut  Vrai
                 Fin Si
                 Fin pour
                 Jusqu’à Permut = Faux
 L’algorithme de la procédure Tri:
 0) Procédure Tri (Var T : Tab ; N :entier)
 1) Répéter
    Permut  Faux
    Pour i de 1 à N-1 faire
    Si T[i] < T[i+1] alors
    Permutation(T[i], T[i+1])
    Permut  Vrai
    Fin Si
    Fin pour
                                                                         9
 ChapIV : Les algorithmes de tri et de recherche                     Prof : Hichem Klouz

    Jusqu’à Permut = Faux
 2) Fin Tri
 T. D .des Objets Locaux :

 Objets          Types     Rôles
 i               Entier    Compteur
 Permut          Booléen
 Permutation     Procédure

 La spécification de la procédure Permutation :
   Résultat : valeurs permutées
   Traitement : c  x
                xy
                yc
 L’algorithme de la procédure Permutation :
 0) Procédure Permutation (Var x, y :caractère)
 1) c  T[i+1]
 2) T[i+1]  T[i]
 3) T[i] c
 4) Fin Permutation
 Tableau de Déclaration des Objets Locaux :

 Objets        Types       Rôles
 c             caractère


II- Recherche d’un élément dans un tableau
1-Définition
  Un algorithme de recherche permet de vérifier l’existence d’un élément dans un tableau parmi
  les méthodes on peut citer : - La recherche séquentielle
                               - La recherche dichotomique

2-La recherche séquentielle
 Activité 4 :
 Ecrire une spécification et un algorithme d’un programme qui permet de vérifier l’existence
 d’une chaîne de caractère CH dans un tableau de N chaînes avec N < 7.
 Décomposition modulaire :
 On peut représenter la décomposition du problème comme suit :

                                            Rech_Séq
                                                                                 Affichage
          Lecture

                                                                                     procédure
     procédure

                           Remplissage de                    Recherche
                              tableau

                                                             fonction
                             procédure
                                                                                             10
 ChapIV : Les algorithmes de tri et de recherche                     Prof : Hichem Klouz




 La spécification du programme principal:
 Résultat : Affichage (Res)
 Traitement : Res Recherche(T, N, CH)
              Remplissage(T, N)
              Lecture (N, CH)

L’algorithme du programme principal:
 0) Début Rech_Séq
 1) Lecture (N, CH)
 2) Remplissage (T, N)
 3) Res Recherche(T, N, CH)
 4) Affichage(Res)
 5) Fin Rech_Séq
T.D.N.T
                    Types
 Tab = Tableau de 6 chaînes de caractères


 Tableau de Déclaration des Objets Globaux

 Objets                          Types                           Rôles
 T                               Tab
 N                               Entier
 CH                              Chaîne
 Res                             Booléen
 Lecture                         Procédure                       Lecture de N
 Remplissage                     Procédure                       Remplissage de T
 Recherche                       Fonction                        Recherche de CH
 Affichage                       Procédure                       Affichage d’un message

 La spécification de la fonction Recherche:
  Résultat : Recherche
  Traitement :   trouve  Faux
                 i1
                 Tant que ( i < = N) et ( trouve = faux) faire
                 Si T[i] = CH alors
                 trouve  vrai
                 Sinon
                 ii+1
                 Fin si
                 Fin tant que
                 Recherche  trouve

                                                                                          11
ChapIV : Les algorithmes de tri et de recherche                         Prof : Hichem Klouz




L’algorithme de la fonction Recherche:
 0)   Fonction Recherche ( t :tab ; N : entier ; CH :chaîne) :booléen
 1)   trouve  Faux
 2)   i1
 3)   Tant que ( i < = N) et ( trouve = faux) faire
      Si T[i] = CH alors
      trouve  vrai
      Sinon
      ii+1
      Fin si
      Fin tant que
 4) Recherche  trouve
 5) Fin Recherche

T. D .des Objets Locaux :

Objets          Types         Rôles
i               Entier        Compteur
trouve          Booléen


La spécification de la procédure Saisie:
 Résultat : N, CH
 Traitement : Répéter
              N=donné(« donnez la taille du tableau »)
                Jusqu’à N<6
                CH= donnée
L’algorithme de la procédure Saisie:
0) Procédure Saisie (Var N :entier ; Var CH :chaîne )
1) Répéter
   Ecrire(« donnez la taille du tableau »)
   Lire(N)
   Jusqu’à N<6
2) Lire (CH)
3)Fin saisie

La spécification de la procédure Remplissage:
 Résultat : T
 Traitement : pour i de 1 à N faire
              T[i]=donné(« donnez un élément du tableau »)

                                                                                         12
 ChapIV : Les algorithmes de tri et de recherche                       Prof : Hichem Klouz

                  Fin pour
 L’algorithme de la procédure Remplissage:
 0) Procédure Remplissage (Var T :Tab ;N :entier)
 1)pour i de 1 à N faire
   Ecrire(« donnez un élément du tableau »)
   Lire(T[i])
   Fin pour
 2)Fin Remplissage
 T. D .des Objets Locaux :

 Objets         Types        Rôles
 i              Entier       Compteur


 La spécification de la procédure Affichage :
 Résultat : Affichage d’un message
 Traitement : Si Res = vrai alors
                Ecrire(« L’élément existe dans le tableau »)
                Sinon
                Ecrire(« L’élément n’existe pas dans le tableau »)
                Fin Si
 L’algorithme de la procédure Affichage :
 0) Procédure Affichage( Res :booléen)
 1) Si Res = vrai alors
    Ecrire(« L’élément existe dans le tableau »)
    Sinon
    Ecrire(« L’élément n’existe pas dans le tableau »)
    Fin Si
 2) Fin Affichage

3-La recherche dichotomique
Définition : La recherche dichotomique consiste à chercher un élément dans un tableau déjà
trié, en réduisant à chaque fois l’espace de recherche et en comprend le milieu de cette éspace à
l’élément rechercher
   Activité 5 :
   Ecrire un programme qui permet de vérifier l’existence d’un caractère C dans un tableau de N
   caractères trié avec N < 6 et cela en utilisant la recherche dichotomique.
   Décomposition modulaire :
 On peut représenter la décomposition du problème comme suit :


                                           Rech_dicho                                  Affichage
      Lecture

                                                                                        procédure
   procédure
                  Remplissage de                                          Recherche
                     tableau                       Tri
                                                                                              13
 ChapIV : Les algorithmes de tri et de recherche                       Prof : Hichem Klouz

                                                                             fonction
                procédure
                                              procédure


 Remarque : Dans notre exemple, pour trié notre tableau avant de passer au module de
 recherche, on va utiliser le tri à bulle. N’importe quelle méthode (sélection, insertion, bulles)
 pourra être utilisée pour trier le tableau.
 La spécification du programme principal:
 Résultat : Affichage (Res)
 Traitement : Res Recherche(T, N, C)
              Tri(T, N)
              Remplissage(T, N)
              Lecture (N, C)

L’algorithme du programme principal:
0) Début Rech_dicho
1) Lecture (N, C)
2) Remplissage (T, N)
3) Tri(T, N)
4) Res Recherche(T, N, C)
5) Affichage
6) Fin Rech_dicho
T.D.N.T
               Types
 Tab = Tableau de 5 caractères


 Tableau de Déclaration des Objets Globaux

 Objets                          Types                            Rôles
 T                               Tab
 N                               Entier
 C                               Caractère
 Res                             Booléen
 Lecture                         Procédure                        Lecture de N
 Remplissage                     Procédure                        Remplissage de T
 Tri                             Procédure                        Tri de T
 Recherche                       Fonction                         Recherche de C
 Affichage                       Procédure                        Affichage d’un message

 La spécification de la fonction Recherche:
 Résultat : Recherche
 Traitement : d  n
               g1
               Répéter
                i  (d + g) Div 2
               Si C < T [i] alors
               di–1
                sinon
                gi+1
                                                                                               14
ChapIV : Les algorithmes de tri et de recherche                          Prof : Hichem Klouz
                Fin si
                jusqu’à ( C = T [i] ) ou ( g > d )
                Si C = T [i] alors Recherche  Vrai
                Sinon Recherche  Faux
                Fin si




L’algorithme de la fonction Recherche:
 0) Fonction Recherche ( t :tab ; N : entier ; C :caractère ) :booléen
 1) d  n
 2) g  1
 3) Répéter
    i  (d + g) Div 2
    Si C > T [i] alors
    di–1
     sinon
     gi+1
     Fin si
     jusqu’à ( C = T [i] ) ou ( g > d )
 4) Si C = T [i] alors Recherche  Vrai
    Sinon Recherche  Faux
    Fin si
 5) Fin Recherche

T. D .des Objets Locaux :

Objets          Types       Rôles
i               Entier      Compteur
g               Entier
d               Entier

La spécification de la procédure Tri:
 Résultat : T
 Traitement : Répéter
              Permut  Faux
              Pour i de 1 à N-1 faire
              Si T[i] < T[i+1] alors
              Permutation(T[i], T[i+1])
              Permut  Vrai
              Fin Si
                Fin pour
                Jusqu’à Permut = Faux
L’algorithme de la procédure Tri:
0) Procédure Tri (Var T : Tab ; N :entier)
1) Répéter
                                                                                          15
ChapIV : Les algorithmes de tri et de recherche           Prof : Hichem Klouz

   Permut  Faux
   Pour i de 1 à N-1 faire
   Si T[i] < T[i+1] alors
   Permutation(T[i], T[i+1])
   Permut  Vrai
   Fin Si
   Fin pour
   Jusqu’à Permut = Faux
2) Fin Tri
T. D .des Objets Locaux :

Objets          Types     Rôles
i               Entier    Compteur
Permut          Booléen
Permutation     Procédure

La spécification de la procédure Permutation :
 Résultat : valeurs permutées
 Traitement : A  x
              xy
              y A
L’algorithme de la procédure Permutation :
0) Procédure Permutation (Var x, y :caractère )
1) A  x
2) x  y
3) y A
4) Fin Permutation
Tableau de Déclaration des Objets Locaux :

Objets        Types       Rôles
A             caractère


La spécification de la procédure Saisie:
 Résultat : N, C
 Traitement : Répéter
              N=donnée(« donnez la taille du tableau »)
             Jusqu’à N<6
             C = donnée
L’algorithme de la procédure Saisie:
0) Procédure Saisie (Var N :entier ; Var C :caractère )
1) Répéter
   Ecrire(« donnez la taille du tableau »)
   Lire(N)
   Jusqu’à N<6
2) Lire ( C )
3)Fin saisie
                                                                           16
ChapIV : Les algorithmes de tri et de recherche                     Prof : Hichem Klouz

La spécification de la procédure Remplissage:
 Résultat : T
 Traitement : pour i de 1 à N faire
              T[i]=donnée(« donnez un élément du tableau »)
              Fin pour

L’algorithme de la procédure Remplissage:
0) Procédure Remplissage (Var T :Tab ;N :entier)
1)pour i de 1 à N faire
  Ecrire(« donnez un élément du tableau »)
  Lire(T[i])
  Fin pour
2)Fin Remplissage
T. D .des Objets Locaux :

Objets      Types        Rôles
i           Entier       Compteur


La spécification de la procédure Affichage :
Résultat : Affichage d’un message
Traitement : Si Res = vrai alors
               Ecrire(« L’élément existe dans le tableau »)
               Sinon
               Ecrire(« L’élément n’existe pas dans le tableau »)
               Fin Si
L’algorithme de la procédure Affichage :
0) Procédure Affichage ( Res :booléen)
1) Si Res = vrai alors
   Ecrire(« L’élément existe dans le tableau »)
   Sinon
   Ecrire(« L’élément n’existe pas dans le tableau »)
   Fin Si
2) Fin Affichage




                                                                                     17

				
DOCUMENT INFO
Stats:
views:25
posted:1/26/2013
language:
pages:17