cours sur le tri - Les algorithmes de tri 1. Introduction...

Info iconThis preview shows pages 1–5. Sign up to view the full content.

View Full Document Right Arrow Icon
1 Les algorithmes de tri 1. Introduction Le tri est sans doute le problème fondamental de l’algorithmique 1. plus de 25% des CPU cycles sont dans les tri 2. le tri est fondamental à beaucoup d’autres problèmes, par exemple recherche binaire. Ainsi donc, après le tri, beaucoup de problèmes deviennent faciles à résoudre. Par exemple : 1. Unicité d’éléments: après le tri tester les éléments adjacents 2. Une fois le tri fait, on peut déterminer le k ème plus grand élément en O(1) Les problème de tri discutés dans ce chapitre sont ceux où l’ensemble des données à trier se trouvent en mémoire centrale. Les problèmes de tri dont les données sont en mémoire secondaire ne sont pas discutés dans ce chapitre. 2. Présentation du problème Le tri consiste à réarranger une permutation of n objets de telle manière n X X X X ... 3 2 1 tri par ordre décroissant n X X X X ... 3 2 1 tri par ordre croissant Comment trier ? Il existe plusieurs solutions: 3. Tri par sélection Répéter 1. chercher le plus grand (le plus petit) élément 2. le mettre à la fin (au début)
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
2 Exemple Figure: tri par sélection Implémentation void selsort(Elem* array, int n) { for (int i=0; i<n-1; i++) { // Selectionner le ième element int lowindex = i; // mémoriser cet indice for (int j=n-1; j>i; j--) // trouver la plus petite valeur if (key(array[j]) < key(array[lowindex])) lowindex = j; // mettre à jour l’index swap(array, i, lowindex); échanger } } Complexité : Le pire cas, le plus mauvais cas et le cas moyen sont pareils (pourquoi?) Pour trouver le plus petit éléments, ( n -1) itérations sont nécessaires, pour le 2ème plus petit élément, ( n -2) itérations sont effectuées, .… Pour trouver le dernier plus petit élément, 0 itération sont effectuées. Le nombre d’itérations que l’algorithme effectue est donc:
Background image of page 2
3 Si par contre, nous prenons comme mesure d’évaluations le nombre de mouvement de données, alors l,algorithme en effectue n -1, car il y a exactement un échange par itération. 4. Tri par Insertion Dans ce cas, itérativement, nous insérons le prochain élément dans la partie qui est déjà triée précédemment. La partie de départ qui est triée est le premier élément. En insérant un élément dans la partie triée, il se pourrait qu’on ait à déplacer plusieurs autres. void inssort(Elem* array, int n) { for (int i=1; i<n; i++) // insérer le ième element for (int j=i; (j>0) && (key(array[j])<key(array[j-1])); j--) swap(array, j, j-1); } Figure: tri par insertion
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
4 Complexité : Comme nous n’avons pas nécessairement à scanner toute la partie déjà triée, le pire cas, le meilleur cas et le cas moyen peuvent différer entre eux.
Background image of page 4
Image of page 5
This is the end of the preview. Sign up to access the rest of the document.

This note was uploaded on 12/09/2009 for the course INF INF taught by Professor Un during the Spring '09 term at Université du Québec à Montréal.

Page1 / 14

cours sur le tri - Les algorithmes de tri 1. Introduction...

This preview shows document pages 1 - 5. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online