Tris Simples/Rapides.

Slides:



Advertisements
Présentations similaires
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Advertisements

EXTRACTION LIQUIDE-LIQUIDE 1. Généralités 1.1 Présentation 1.2 Intérêt1.3 Constante K D 2. Représentation des systèmes ternaires 4. Différents types d.
Premiers pas avec PowerPoint
Traitement de texte : notions avancées
UE2 - M22 Licence acoustique
Attribution des parcours éducatifs
Le Mouvement Directionnel
La technologie des mémoires
Coloration de graphe, backtracking, branch and bound
Un Algorithme , c'est Quoi ?
LES TABLEAUX EN JAVA.
Division de la Planification et de la Recherche en Collecte
Algorithme et programmation
CCNP Routage Chapitre 4 - Questionnaire N°1
Métrologie Document de reference : “Incertitude en Science de la Nature” Cours : 360-ESZ-03 “Logiciels appliqués en sciences” La métrologie est la « science.
Cours 4 : Tris de Tableaux
Ajouter le code dans une page html
Niveau 2 : Tables de plongée
L’Instruction de Test Alternatif
IFT 615 – Intelligence artificielle Recherche heuristique
Javadoc et débogueur Semaine 03 Version A16.
Bddictionnairique Phase 1
Principes de programmation (suite)
Initiation à la programmation impérative et algorithmique
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Algorithmique & Langage C
Cyber-Sphinx Séance 2.
VI. Tri par tas (Heap sort)
Programmation Impérative II
Semaine #4 INF130 par Frédérick Henri.
Tableau de bord des risques
Techniques du Data Mining
Information, Communication, Calcul
Algorithmique & Langage C IUT GEII S1 Notes de cours (deuxième partie)
Notion De Gestion De Bases De Données
Création Et Modification De La Structure De La Base De Données
M1103 : Structures de données et algorithmes fondamentaux
PROGRAMMATION ET ENSEIGNEMENT
La cotation fonctionnelle Chapitre A : Tolérances dimensionnelles
Réseaux de neurones appliqués à la reconnaissance de caractères
Détecteurs et descripteurs
Techniques du Data Mining
Exercice : le jeu. Vous devez concevoir l’algorithme permettant de jouer avec votre calculatrice : elle détermine au hasard un nombre caché entier entre.
Chapitre 3 : Caractéristiques de tendance centrale
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Adaptive Neuro Fuzzy Inference System (ANFIS)
Thème Sujet à développer
NUMERATION et REPRESENTATION DES NOMBRES
4°) Intervalle de fluctuation :
Lois de Probabilité Discrètes
Lois de Probabilité Discrètes
Élections locales probabilistes
Université de la méditerranée
CHAPITRE 8 Equations - Inéquations
Le code de Huffman: est une méthode de compression statistique de données qui permet de réduire la longueur du codage d'un alphabet. Le code de Huffman.
Présentation 9 : Calcul de précision des estimateurs complexes
Un Mécanisme d‘Adaptation Guidé par le Contexte en Utilisant une Représentation par Objets Manuele Kirsch Pinheiro Laboratoire LSR – IMAG, Équipe SIGMA.
Championnat de France individuel
Algorithme de tri - Tri à bulles
Reconnaissance de formes: lettres/chiffres
NUMÉRATION POSITIONNELLE / PRINCIPE DE GROUPEMENT
Programmation Scratch
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Tableaux croisés dynamiques sous Excel: des outils simples pour une analyse rapide de jeux de données en cytométrie Camille SANTA MARIA Ingénieur d’étude.
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.
Listes Chaînées.
Arbre binaire.
Chapter 11: Récursivité Java Software Solutions Second Edition
INTELLIGENCE ARTIFICIELLE
Elections locales probabilistes
Transcription de la présentation:

Tris Simples/Rapides

Sommaire Tri par bulles Tri par sélection Tri par insertion  Comparaison des tris simples Tri Shell Tri rapide Chapitre 3 Data Structures & Algorithm, 2nd Edition, Robert Lafore

Tri par bulles Principe Parcourir le tableau en comparant 2 à 2 les éléments adjacents, et en les permutant si le premier des deux éléments est supérieur au second Après un premier balayage complet, le plus grand élément se trouve à l'indice n-1 Critère d’Arrêt : tableau restant à trier : un seul élément

Tri par bulles Principe (Premier balayage) Fin du premier balayage

Tri par bulles Principe (exemple)

Tri par bulles Principe (variantes possibles) Comparer uniquement les éléments qui ne sont pas remontés : itération i – comparaison des N-i premiers éléments Faire descendre les plus petites valeurs vers le début : parcours de droite vers la gauche Reprendre du début chaque fois qu'une permutation à été effectuée

Tri par bulles Principe (Invariants de l’algorithme) Certaines conditions restent inchangées durant l'algorithme. Rendant le Débogage plus facile, compréhension plus aisé. Dans le contexte du tri par bulles : Première itération : élément le plus important à la dernière position Deuxième itération : deuxième élément le plus important à l'avant dernière position les deux éléments les plus importants se trouvent aux bons emplacements L'invariant de la boucle est vrai à chaque itération

Efficacité de l'algorithme Tri par bulles Efficacité de l'algorithme  Pour N éléments: Nombre de comparaisons : itération 1 : N-1 comparaisons itération 2 : N-2 comparaisons itération 3 : N-3 comparaisons  (N-1) + (N-2) + (N-3) + …….+ 1  (N*(N-1)/2  N2/2

Efficacité de l'algorithme Tri par bulles Efficacité de l'algorithme  Pour N éléments: Nombre de Permutations : Nombre de permutations est inférieur au nombre de comparaisons Données aléatoires : N2/4 Comparaisons et permutations : proportionnels à N2 Tri par bulles : O( N2)

Tri par bulles (Voir l’exemple TriABulle)

Tri par bulles (Voir l’exemple TriABulle suite ….)

Tri par bulles (Voir l’exemple TriABulle suite ….)

Tri par sélection Le tri par sélection est une autre variante du tri par bulles Nombre de permutations : O(N) Nombre de comparaisons reste le même O(N2) Principe  au ième parcours, on considère que les i-1 premiers éléments sont triés à chercher le plus petit élément parmi les éléments non encore triés  à le placer à la suite des éléments triés (i) => une seule permutation

Tri par sélection Principe

Tri par sélection Principe Itération 1 Itération 2 Itération 3

Tri par sélection Principe (exemple)

Tri par sélection Invariant: les i-1 éléments sont toujours triés. Efficacité du tri par sélection  N*(N-1)/2 comparaisons N important : temps de comparaison très important Tri par sélection : O(N2) Plus rapide : à cause du faible nombre de permutations

Tri par sélection (Voir l’exemple TriParSelection)

Tri par sélection (Voir l’exemple TriParSelection suite …)

Tri par sélection (Voir l’exemple TriParSelection suite …)

Tri par insertion Principe N'utilise aucune fonction de permutation  Déplace les éléments pour faire de la place pour chaque nouvel élément à insérer  ième itération : déplacement d'un emplacement à droite de tous les éléments se trouvant à gauche de a [i] et supérieur à a [i] Insertion de a [i] au bon endroit  

Tri par insertion Principe Itération i

Tri par insertion Principe (exemple)

Tri par insertion Invariant: Après chaque insertion : Les éléments dont l'indice est inférieur à outer (indice de la boucle externe) sont partiellement triés Efficacité du tri par insertion Comparaisons : Passe 1 : MAX: 1 comparaison Passe 2 : MAX: 2 comparaisons Passe 3 : MAX: 3 comparaisons … Passe N-1 : MAX: N-1 comparaisons MAX:  N*(N-1)/2 Au cours de chaque passe : la moitié des items sont comparés en moyenne (N*(N-1)/4) Nombre de copies : égale au nombre de comparaisons Deux fois plus rapide que le tri par bulles Plus rapide que le tri par sélection Tri par insertion : O(N2)

Tri par insertion (Voir l’exemple TriParInsertion)

Tri par insertion (Voir l’exemple TriParInsertion suite ….)

Tri par insertion (Voir l’exemple TriParInsertion suite ….)

Tris simples (conclusion) Tous les algorithmes de tri simple sont stables Tri par bulles : plus simple Pratique si N est petit  Tri par sélection : nombre de permutations réduit nombre de comparaisons reste élevé pratique Pour N petit et T permutation > T comparaison Tri par insertion : plus souple meilleur dans la plupart des situations

Tri Shell Le tri Shell proposé par Donald L. Shell constitue une variante optimisée du tri par insertion Tri Shell  basé sur de nouvelles caractéristiques  Amélioration de la performance du tri par insertion  Plus rapide que le tri par sélection et le tri par insertion O(N2)  Moins rapide que le tri rapide O(N*Log(N))  Facile à implémenter Tri Shell : éléments décalés de plusieurs espaces à la fois  Incrément (pas) ; espace entre les éléments  Réduction du nombre de pas : à chaque étape  Affinage du tri  pas = 1 => tri par insertion  application du tri par insertion sur un tableau possédant un certain ordre 

Tri Shell Exemple: 

Tri Shell Exemple: Les items espacés de quatre cellules sont triés Quatre sous tableaux triés :  (0, 4, 8) indices (1, 5, 9) indices (2, 6) indices (3, 7) indices  Il en résulte un tableau presque trié Tri par insertion devient efficace : déplacement de l’élément d’au plus deux cellules  O(N)  Combinaison des deux : plus rapide que l’utilisation du seul tri par insertion  

Tri Shell Choix de l'incrément (pas) Le choix du pas est fonction de la taille du tableau Réduction du pas à chaque étape La séquence de nombres utilisés pour générer l'intervalle est appelé séquence d'intervalle Le choix du pas ne doit pas se faire au hasard Les valeurs des différents pas ne doivent pas être des multiples des autres Important : réalisation de l'étape ou le pas est égal à un Le pas ne doit pas dépasser la taille du tableau  Exemple :  Tableau à N =1000  364, 121, 40, 13, 4, 1  

Tri Shell Choix de l'incrément (pas): Séquence de Knuth  

Tri Shell Voir l’exemple TriShell  

Tri Shell Voir l’exemple TriShell (suite …)  

Tri Shell Voir l’exemple TriShell (suite …)  

Tri rapide (Quick sort) Partition Le tri rapide est basé sur un processus de partition appliqué de manière récursive Le processus de partition consiste à subdiviser le tableau à trier en deux sous tableaux définis ainsi :  le sous tableau de gauche ne comporte que des éléments inférieur à une valeur de référence  le sous tableau de droite ne comporte que des éléments supérieur à une valeur de référence  Valeur Pivot : valeur de référence par rapport à laquelle les éléments sont regroupés (à gauche et à droite)  La valeur de référence : valeur faisant partie du tableau  

Tri rapide (Quick sort) Partition (algorithme) int partition( int left, int right, long pivot) { int leftPtr = left –1; int rightPtr = right +1; while (true) { while (leftPtr <right && theArray[++leftPtr] < pivot) ; // avancer while (rightPtr>left && theArray[--rightPtr] > pivot) ; // avancer if (leftPtr >= rightPtr) break; else swap (leftPtr, rightPtr); // permuter } retun leftPtr; //retourne la limite de la première partition }  

Tri rapide (Quick sort) Partition (algorithme: efficacité) O(N)  Temps d'exécution proportionnel au nombre d'éléments  Nombre de permutations inférieur au nombre de comparaisons  Comparaison et permutation proportionnelles à N

Tri rapide (Quick sort) Tri rapide, dans la majorité des situations est : O(Nlog2N)  Principe :  Le tri rapide fonctionne en partitionnant le tableau à trier en deux sous tableaux  Trie récursivement chaque sous tableau : partition du sous tableau en deux etc.  Sélection du pivot et tri des petites partitions  La méthode de partition est modifiée : pivot à la dernière position

Tri rapide (Quick sort) Tri rapide (Algorithme) void recQuickSort(int left, int right) { if (right-left <= 0) return; // taille est 1 else { long pivot = theArray[right]; // choix du pivot int partition = partitionIt(left, right, pivot); recQuickSort(left, partition-1); recQuickSort(partition+1, right); } }

Tri rapide (Quick sort) Analyse de l'algorithme Sélection du pivot : médian de toutes les valeurs à trier Division du tableau en deux tableaux de même taille Sélectionner le médian parmi le premier, le dernier et celui du centre

Tri rapide (Quick sort) Voir l’exemple TriRapideVersionMedianofThreePartionning

Tri rapide (Quick sort) Voir l’exemple TriRapideVersionMedianofThreePartionning (suite …)

Tri rapide (Quick sort) Voir l’exemple TriRapideVersionMedianofThreePartionning (suite …)

Tri rapide (Quick sort) Voir l’exemple TriRapideVersionMedianofThreePartionning (suite …)