Sie sind auf Seite 1von 21

Algorithmique...

Les algorithmes de tri


Nicolas Delestre et Michel Mainguenaud
{Nicolas.Delestre,Michel.Mainguenaud}@insa-rouen.fr Adapt pour lENSICAEN par Luc Brun {luc.brun}@insa-rouen.fr

Tableaux p.1/21

Plan...
Les algortihmes de tri Dnition dun algorithme de tri, Le tri par minimum successifs, Le tri a bulles, Le tri rapide. Les algorithmes de recherche. Recherche squentielle non trie Recherche squentielle trie, Recherche dichotomique.

Tableaux p.2/21

Dnition dun algorithme de Tri

Les tableaux permettent de stocker plusieurs lments de mme type au sein dune seule entit, Lorsque le type de ces lments possde un ordre total, on peut donc le ranger en ordre croissant ou dcroissant, Trier un tableau cest donc ranger les lments dun tableau en ordre croissant ou dcroissant Dans ce cours on ne fera que des tris en ordre croissant

Il existe plusieurs mthodes de tri qui se diffrencient par leur complex dexcution et leur complexit de comprhension pour le programmeur Examinons tout dabord : le tri par minimum successif

Tableaux p.3/21

La procdure changer...

Tous les algorithmes de tri utilisent une procdure qui permet dchanger (de permuter) la valeur de deux variables Dans le cas o les variables sont entir la procdure changer est la suivante : procdure changer (E/S a,b : Entier) Dclaration temp : Entier dbut temp a a b b temp n

Tableaux p.4/21

Tri par minimum successif...

Principe Le tri par minimum successif est ce que lon appelle un tri par slection : Pour une place donne, on slectionne llment qui doit y tre positionn De ce fait, si on parcourt la tableau de gauche droite, on positionn chaque fois le plus petit lment qui se trouve dans le sous tableau d Ou plus gnralement : Pour trier le sous-tableau t[i..nbElement suft de positionner au rang i le plus petit lment de ce sous-tableau et de trier le sous-tableau t[i+1..nbElements]

Tableaux p.5/21

Tri par minimum successif...


Par exemple, pour trier 101, 115, 30, 63, 47, 20 , on va avoir les boucles suivantes : i=1 101, 115, 30, 63, 47, 20

i=2 20, 115, 30, 63, 47, 101

i=3 20, 30, 115, 63, 47, 101 i=4 20, 30, 47, 63, 115, 101

i=5 20,30, 47, 63, 115, 101

Donc en sortie :

20, 30, 47, 63, 101, 155

Il nous faut donc une fonction qui pour soit capable de dterminer le plus p rang

lment (en fait lindice du plus petit lment) dun tableau partir dun cer

Tableaux p.6/21

Fonction indiceDuMinimum...

fonction indiceDuMinimum (t : Tableau[1..MAX] dEntier ; rang, nbElemen Naturel) : Naturel Dclaration i, indiceCherche : Naturel dbut indiceCherche rang pour i rang+1 nbElements faire si t[i]<t[indiceCherche] alors indiceCherche i nsi retourner indiceCherche npour n

Tableaux p.7/21

Tri par minimum successif...

Lalgorithme de tri est donc : procdure effectuerTriParMimimumSuccessif (E/S t : Tableau[1..MAX dEntier; E nbElements : Naturel) Dclaration i,indice : Naturel dbut pour i 1 nbElements-1 faire indice indiceDuMinimum(t,i,nbElements) si i indice alors echanger(t[i],t[indice]) nsi npour n

Tableaux p.8/21

Complexit
Recherche du minimum sur un tableau de taille Parcours du tableau.
       

Complexit en

Tableaux p.9/21

Le tri bulles
Principe de la mthode : Slectionner le minimum du tableau en parcourant le tableau de la n au dbut et en changeant tout couple dlments conscutifs non ordonns.

Tableaux p.10/21

Tri bulles : Exemple


Par exemple, pour trier 101, 115, 30, 63, 47, 20 , on va avoir les boucles suivantes : i=1 101, 115, 30, 63, 47, 20 101, 115, 30, 63, 20, 47 101, 115, 30, 20, 63, 47 101, 115, 20, 30, 63, 47 101, 20, 115, 30, 63, 47

i=2 20, 101, 115, 30, 63, 47

i=3 20, 30,101, 115, 47, 63 i=4 20, 30,47,101, 115, 63


i=4 20, 30, 47, 63, 101, 115 Donc en sortie :

20, 30, 47, 63, 101, 155

Tableaux p.11/21

Tri bulles : lalgorithme


Dclaration i,k : Naturel dbut pour i 0 nbElements-1 faire pour k nbElements-1 i+1 faire si t[k]<t[k-1] alors echanger(t[k],t[k-1]) nsi npour npour n

procdure TriBulles (E/S t : Tableau[1..MAX] dEntiers,nbElements : Natu

Tableaux p.12/21

Tri bulles : Complexits


Nombre de tests(moyenne et pire des cas) :
         

Complxit en . Nombre dchanges (pire des cas):


        !       

Nombre dchange (en moyenne) En rsum : complexit en .


  

(calcul plus compliqu)

Tableaux p.13/21

Le tri rapide

Principe de la mthode Choisir un lment du tableau appel pivot, Ordonner les lments du tableau par rapport au pivot Appeler rcursivement le tri sur les parties du tableau gauche et droite du pivot.

Tableaux p.14/21

Le tri rapide
Algorithme :
procdure TriRapide (E/S t : Tableau[1..MAX] dEntier; gauche,droit : Naturel) Dclaration i,j : Naturel; pivot,x : Entier dbut i gauche;j droit;pivot t[(i+j)/2] rpter tant que t[i] pivot faire i i+1ntant que tant que t[j] pivot faire j j-1ntant que si i j alors echanger(tab[i],tab[j]) i+1 i j-1 j nsi jusqu ce que i j si gauche j alors TriRapide(t,gauche,j) nsi si i droit alors TriRapide(t,i,droit) nsi

"

"

"

"

"

"

"

Tableaux p.15/21

Exemple. . .

Par exemple, pour trier 101, 115, 30, 63, 47, 20 , on va avoir les itrations suivantes : 101(i), 115, 30(p), 63, 47, 20(j)

20, 115(i), 30, 63, 47(j), 101 20, 47, 30(i), 63(j), 115, 101 20, 47(j), 30, 63(i), 115, 101
& 

Et on relance le processus sur les deux sous tableaux .


' 12 ' 3 

et

'(&

63(g),115(p),101(d) 63,115(i),101(j) 63,101,115


Tableaux p.16/21

Complexit

Le tri par rapport au pivot ncessite de parcourir le tableau. On relance ensuite le processus sur les deux sous tableaux gauche et droite du pivot.
   5 6 4   4   4   5  

Posons

. On obtient :
5 6   

En repassant en : . La complexit est donc en (dans le meilleur des cas).


    8 97 @  A    8 97 @

Tableaux p.17/21

Algorithmes de recherche
Recherche dans un tableau non tri. fonction rechercheNonTrie (tab : Tableau[0..MAX] dlments, x : lment) : Naturel Dclaration i : Naturel dbut i 0 tant que (i MAX) et (tab[i] x) faire i i+1 ntantque si i=MAX+1 alors retourner MAX+1 nsi retourner i n
B

Tableaux p.18/21

Algorithmes de recherche
Recherche squentielle dans un tableau tri.

fonction rechercheSeqTrie (tab : Tableau[0..MAX] dlments, x : lment Naturel Dclaration i : Naturel dbut i 0 tant que x>tab[i] faire i i+1 ntantque si x=tab[i] alors retourner i nsi retourner MAX+1 n

Tableaux p.19/21

Algorithme de recherche

fonction rechercheDicoTrie (tab : Tableau[0..MAX] dlments, x : lmen Naturel Dclaration gauche,droit,milieu : Naturel dbut gauche 0;droit MAX tant que gauche droit faire milieu (gauche+droit) div 2 si x=tab[milieu] alors retourner milieu nsi si x<tab[milieu] alors droit milieu-1 sinon gauche milieu+1 nsi ntantque retourner MAX+1 Tableaux p.20/21 n
B

Exemple
On cherche 101 dans 20, 30, 47, 63, 101, 115 .

i=1 20(g), 30, 47(m), 63, 101, 115(d) . i=2 20, 30, 47, 63(g), 101(m), 115(d) .

et on renvoi lindice de 101.

Tableaux p.21/21

Das könnte Ihnen auch gefallen