La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Plan du chapitre I. Introduction II. Rappel III. Le tri Shell IV. Le tri par fusion V. Applications.

Présentations similaires


Présentation au sujet: "Plan du chapitre I. Introduction II. Rappel III. Le tri Shell IV. Le tri par fusion V. Applications."— Transcription de la présentation:

1

2 Plan du chapitre I. Introduction II. Rappel III. Le tri Shell IV. Le tri par fusion V. Applications

3 I. Introduction Qu'est-ce qu'un tri ? Un tri est une procédure qui permet de classer ou ordonner une série d'éléments d'un type quelconque, selon un ordre croissant ou décroissant en utilisant un principe ou un algorithme formels donné. La série déléments est un tableau dentiers par exemple. En informatique ou en mathématiquesmathématiques, un algorithme de tri est un algorithme qui permet d'organiser une collection d'objets selon un ordre déterminé. Les objets à trier font donc partie d'un ensemble muni d'une relation d'ordre (de manière générale un ordre total). Les ordres les plus utilisés sont lordre numérique et l'ordreordre lexicographique (dictionnaire). Suivant la relation d'ordre considérée, une même collection dobjet peut donner lieu à divers arrangements, pourtant il est possible de définir un algorithme de tri indépendamment de la fonction dordre utilisée. Celui-ci ne fera qu'utiliser une certaine fonction dordre correspondant à une relation dordre qui doit permettre de comparer tout couple d'éléments de la collection.

4 Complexité des algorithmes de tris La complexité des algorithmes de tris varie selon la méthode utilisée. Pour cela plusieurs algorithmes de tris existent qui n'ont pas tous la même complexité

5 Quel sont les particularités des tris Tris itératifs Tris récursifs

6 TRIS ITERATIFS Quelles sont les particularités des tris itératifs ? Dans un tri itératif, on procède de manière itérative ! C'est-à-dire que l'on trie le tableau d'un seul bloc, en le parcourant élément par élément, case par case. Il y a en fait deux principes différents : se déplacer de la première à la dernière case, en y plaçant à chaque fois l'élément qui doit y aller : c'est le tri par sélection et tri à bulle),tri par sélectiontri à bulle inversement, prendre chaque élément dans l'ordre où il se présente, et le mettre à la bonne place : c'est le tri par insertion et tri Shell tri par insertiontri Shell

7 II. Rappel 1. Tri par sélection 2. Tri à bulles 3. Tri par insertion Tri par insertion

8 3. Tri par insertion Principe Simulation Résolution de problèmes Complexité

9 Principe Le tri par insertion est le tri le plus efficace sur des listes de petite taille. C'est pourquoi il est utilisé par d'autres méthodes comme le tri rapide (ou quicksort). Il est d'autant plus rapide que les données sont déjà triées en partie dans le bon ordre. Le principe de ce tri est très simple: c'est le tri que toute personne utilise naturellement quand elle a des dossiers, des cartes (ou n'importe quoi d'autre) à classer. On prend un dossier et on le met à sa place parmi les dossiers déjà triés. Puis on recommence avec le dossier suivant.

10 Pour procéder à un tri par insertion, il suffit de suivre lalgorithme formel suivant: Parcourir une liste : on considère que les (i-1) premiers éléments de la liste sont triés et placer le i ème élément à sa place parmi les (i-1) déjà triés. Répéter cette action jusquà atteindre la fin de la liste Pour insérer le i ème élément à sa place utiliser une variable intermédiaire tmp pour conserver la valeur à insérer puis, Déplacer les éléments tab[i-1],tab[i-2],… vers la droite tant que leur valeur est supérieure à celle de tmp. Affecter alors à lemplacement dans le tableau laissé libre par le décalageà droite la valeur de tmp. Remarques: On peut aussi faire une recherche par dichotomie sur les tableaux. Une amélioration possible de ce tri, sensible pour les listes de plus de 15 éléments, est le tri de ShellShell.

11 Simulation Fixe Dynamique

12 Simulation fixe On procède à trier ce tableau par ordre croissant. Le sous-vecteur constitué du premier élément seul est évidemment trié! On peut donc considérer que notre problème se ramène à deux vecteurs, un trié de longueur 1 et un non trié de longueur 6-1. Etape1 On cherche la position dinsertion de lélément dindice 2 dans la 1 ère partie du tableau dans lordre convenable puisque 2>1: on garde la valeur de lélément en cours dans la variable tmp On décale à droite dun pas la première case et mettre la valeur de tmp à la 1 ère case: Tmp Soit le tableau non-trié à 6 composantes suivante:

13 Etape2:On traite à présent la troisième composante de valeur 8. 8 est plus grand que 2 et ne doit donc pas bouger. La nouvelle situation est alors: Etape3:On cherche la position dinsertion du lélément dindice 4 dans la 1ère partie du tableau dans lordre convenable on garde la valeur de lélément en cours dans la variable tmp On décale à droite dun pas lélément n°3,…jusquà avoir un élément inférieur à 4 Affecter à la dernière case décalée la valeur de tmp Tmp

14 Etape4:On cherche la position dinsertion du lélément dindice 5 dans la 1ère partie du tableau dans lordre convenable on garde la valeur de lélément en cours dans la variable tmp On décale à droite dun pas lélément n°4,…jusquà avoir un élément inférieur à 3 Affecter à la dernière case décalée la valeur de tmp Etape4:On cherche la position dinsertion de lélément dindice 5 dans la 1ère partie du tableau dans lordre convenable on garde la valeur de lélément en cours dans la variable tmp On décale à droite dun pas lélément n°4,…jusquà avoir un élément inférieur à 3 Affecter à la dernière case décalée la valeur de tmp Tmp

15 Tri par insertion Résolution du problème Tri insertion Saisie(n)Remplir(n,T) Affiche(n,T) Trier (n,T) Procédure Décomposition modulaire DECALER(T, Deb,fin) Procédure

16 Tri par insertion Résolution du problème Analyse du programme Principal: Résultat: Laffichage du tableau trié est la tâche de la procédure afficher Traitement: - Pour trier le tableau on appelle la procédure trier - Le tableau est rempli grâce à la procédure remplir - Le nombre des éléments à remplir est donné par la procédure saisir

17 Tri par insertion Résolution du problème Algo du Programme Principal 0) Début tri_ins 1)Saisie(n) 2)remplir(T,n) 3)Trier(T,n) 4)Affiche(T,n) 5)Fin tri_ins

18 Analyse de la procédure trier Résultat: T trié Traitement: Daprès lalgorithme formel de cette méthode il sagit dun traitement répétitif complet de lélément n°2 jusquau dernier élément du tableau: Pour I de 2 à n faire Pour chaque valeur du compteur et si lélément correspondant nest pas à sa place, nous réalisons les actions suivantes: Ranger la valeur de T[I] dans la variable Tmp Décaler vers la droite les valeurs de T[i-1],T[i-2],… jusquà arriver à une valeur qui est inférieure à T[c]. Cette action est réalisée par la procédure DECALER. Affecter au dernier élément décalé la valeur de Tmp Si T[i-1] > T[i] alors Tmp T[i] DECALER (T,i-1,p) T[p+1] Tmp Finsi

19 Algorithme de la procédure trier 0) procedure trier(n:entier; var t:tab) 1) Pour i de 2 à n faire Si T[i-1] > T[i] alors Tmp T[i] DECALER (T,i-1,p) T[p+1] Tmp Finsi Finpour 2) Fin trier

20 Spécification de la procédure décaler Algorithme Résultat:décaler à droite les éléments du tableau T dindice deb à lindice fin Traitement: Il sagit dun traitement répétitif à condition darrêt: Tant que (fin>=1) et (T[fin]>tmp) faire initialisation:fin deb Action de décalage: T[fin+1] T[fin] Décrémentation de la variable fin par 1:fin fin-1 0) procedure DECALER(var t:tab;deb:entier; varfin: entier) 1) Fin deb Tant que (fin>=1) et (T[fin]>tmp) faire T[fin+1] T[fin] fin fin-1 Fin tantque 2) Fin DECALER

21 Complexité Comme nous l'avons vu ci-dessus, le tri par insertion linéaire est, en moyenne, essentiellement d'ordre n 2. (puisque il utilise 2 boucles imbriquées dordre n). Il est toutefois évident que si le vecteur est déjà presque trié dans le bon ordre, le nombre d'opérations sera beaucoup plus réduit. Il suffit pour s'en convaincre de réfléchir au tri par insertion linéaire d'un vecteur déjà complètement trié: pour chaque élément, une seule comparaison sera nécessaire pour déterminer à quelle place il doit se mettre. Dans ces conditions, on n'a à effectuer que environ n opérations. Ces considérations ont amené à envisager des méthodes de tri qui permettent de déplacer les éléments à trier de plus d'une case à la fois obtenant ainsi un tri préliminaire rapide qui regroupe en tête du vecteur les petits éléments, et en fin de vecteur, les grandes valeurs. Ce pré-tri permet alors d'accélérer sensiblement la suite des opérations cest le tri Shell

22 Tri SHELL Imaginé par D. L. Shell (1959) Ce tri est une accélération du tri par insertion. Dans le tri par insertion, un élément va à sa place en progressant lentement, case par case. L'accélération consiste à le faire aller à sa place en commençant par faire des grands pas, puis des pas de plus en plus petits, jusqu'à, évidemment, des pas de 1 pour que le tableau soit trié.

23 L'étape de base de l'algorithme considère le tableau initial constitué de P sous-tableaux, dont les éléments sont distants de P cases. ces P tableaux sont triés par l'algorithme de tri par insertion. On dit alors que le tableau initial est P-trié. On répète cette opération de base pour des valeurs de P qui vont en diminuant jusqu'à une valeur finale 1. La qualité du tri Shell va dépendre de la suite des valeurs de P. Une "bonne" suite est donnée par : P 1 =1 P k +1=3*P k +1 Principe Tri SHELL

24 Tri SHELL … Exemple On se propose dutiliser la méthode de tri Shell pour trier un tableau T en ordre croissant. Considérons le tableau T contenant les 5 éléments suivants: T= 54321

25 Étape 0: Calculer P le plus grand décalage possible en utilisant linstruction suivante: Tant que PN faire P 3*P+1 Fin Tantque Donc P vaut 13 Tri SHELL … Exemple T= 54321

26 Étape 1: Tant que P>1 cest-à-dire tant que le décalage possible on calcule P en utilisant la formule suivante:P (P-1)div 3 On obtient P=4 Donc on fait le décalage avec pas de 4 Tri SHELL … Exemple T= 54321

27 Étape 1…: Puisque P=4 On fait le parcours du tableau de la case n°5 (P+1) à la dernière case en utilisant la méthode de tri par insertion mais avec un décalage de pas de 4. On obtient le tableau suivant: Tri SHELL … Exemple T= 54321

28 Étape 2: Après que le décalage se termine et puisque P=4>1. on recalcule de nouveau P et on trouve P= (P-1) div 3=1 On fait le parcours du tableau de la case n°2 (P+1) à la dernière case en utilisant la méthode de tri par insertion avec un décalage de pas de 1. On obtient le tableau suivant: Tri SHELL … Exemple T= 54321

29 Algorithme de la procédure Trier 0) Procedure Trier( n:integer;var T;tab) 1) P 1 2) Tant que Pn faire P P*3+1 Fin Tantque 3) Tant que P>1 faire P P Div 3 Pour j de P+1 à n faire aux T[j] k j Tant que (k>P) et (T[K-P]>aux) faire T[k] T[k-P] K k-P Fin tant Que T[k] aux Fin Pour Fin Tantque 4) Fin Trier calcul du plus grand décalage possible tant que le décalage possible est non nul valeur à décaler (éventuellement) décalage des valeurs avec un pas de p Insertion de lélément à sa place


Télécharger ppt "Plan du chapitre I. Introduction II. Rappel III. Le tri Shell IV. Le tri par fusion V. Applications."

Présentations similaires


Annonces Google