1. Tri rapide ou Quicksort Principe : La méthode du Quicksort due au C.A. Hoare (1962) utilise les principes généraux de division et équilibrage. 2.

Slides:



Advertisements
Présentations similaires
La Méthode de Simplexe Standardisation
Advertisements

Structures de données avancées : Principales structures de fichiers
Tris.
Algorithmes et structures de données avancés
Fonctions & procédures
Les Algorithmes de tri.
Plan : Définition L’affectation Les entrées Les sorties exercices
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Licence 3ème année de sociologie Semestre 1
1 Révisions. 2 Tableaux non contraints Déclaration du type : type Tvecteur = tableau ( intervalle dentiers) de entiers type Tvecteur is array (integer.
Chapitre III. Algorithmique élémentaire des tableaux (recherche, tri)
Utilisation des tableaux
Réalisation dun travail concret avec des matrices Afficher un objet 3D sur une surface Lui appliqué des transformations Le voir se transformer suivant.
ALGORITHMES RECURSIFS
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Arbre binaire de recherche
Chapitre VII. Tri Tri par tas Tri rapide.
Methode de Tri efficace
Programmation linéaire
Optimisation linéaire
Le cas de la demande déterministe non stationnaire
La segmentation
Chaîne logistique : - Approvisionnement - Stocks
INF1101 Algorithmes et structures de données
Inéquations du 1er degré
Algorithmes d ’approximation
Optimisation linéaire
Algorithmes probabilistes
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Les Algorithmes de Tri Introduction Tri par Sélection
Chapitre 5 Diminuer pour régner Mario Marchand
Programmation linéaire en nombres entiers : les méthodes de troncature
Analyse des Algorithmes
III. Récursivité Principe et exemples
l’algorithme du simplexe
Algo-Prog en Ada TD2 2 IMACS Romaric GUILLERM
Heuristiques C. Recherche de la meilleure branche . Branch And Bound
ALGORITHME DE TRI Le tri par insertion.
ASI 3 Méthodes numériques pour l’ingénieur
ASI 3 Méthodes numériques pour l’ingénieur
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
David Rivreau Table de hachage David Rivreau
Chapitre 6 Les traitements avancés
Programmation objet La base.
Programmation linéaire en nombres entiers
Calcul parallèle => partitionner les données en sous-groupes associés aux processeurs. P0 P2 P1.
Méthodes de tri.
Micro-intro aux stats.
Cours 4 - Trois algorithmes de recherche dans un tableau
Seconde partie Cours de seconde
2. Optimisation sans contrainte Fonctions à une seule variable
Structures de données avancées : Concepts du Multidimensionnel D. E ZEGOUR Institut National d ’Informatique.
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.
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
Organisation des données Introduction à la programmation Traitements simples Affectation Parcours Définition du tableau Les Tableaux Mise en situation.
Introduction à la récursivité
Structures de données avancées : Principales structures de fichiers
Algorithmes de tri.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Les structures simples
Algorithmique Tableaux de données
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Semaine 14 Les algorithmes de tri Département d’informatique et de génie logiciel Édition septembre 2009.
VI. Tri par tas.
LES TABLEAUX Définition: Création d’un tableau:
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
Algorithmique Boucles et Itérations
. Le B-Arbre.
L'exécution d'un programme nécessite l'utilisation des ressources de l'ordinateur : temps de calcul pour exécuter les opérations, et l'occupation de la.
1 UE Intro. Optimisation L3 INFO UPSud II. Programmation linéaire en variables entières (ou mixtes)
Transcription de la présentation:

1

Tri rapide ou Quicksort Principe : La méthode du Quicksort due au C.A. Hoare (1962) utilise les principes généraux de division et équilibrage. 2

Méthode du Quicksort On veut trier A 1, A 2, …, A n On suit la procédure suivante : 1. On choisit un élément particulier appelé pivot 2. On réorganise le tableau de telle sorte que i) le pivot soit en A s ii) A i  A s si i < s iii) A i > A s si i > s 3. On trie A 1, A 2, …, A s-1 (par la même méthode) 4. On trie A s+1, A s+2, …, A n (par la même méthode) 3

Réalisation de partition Partition doit choisir un bon pivot et réorganiser efficacement le tableau. Un élément du tableau est un bon pivot, s'il y a à peu près autant de valeurs inférieures que de valeurs supérieures à cet élément dans le tableau. Une solution pour déterminer un pivot à moindre coût consiste à prendre quelques éléments au hasard dans le tableau et à choisir l'élément médian. 4

5 Algorithme 70 : tri_rapide (i : entier, j : entier, A : tableau) Donnée : i index de début de tableau Donnée : j index de fin de tableau Donnée modifiée : tableau A Variable locale: s position de pivot après la partition début si j > i alors s  partition(i, j, A) tri_rapide(i, s-1, A) tri_rapide(s+1, j, A)fin

6 Le pivot étant choisi, il faut organiser le tableau sans le classer. Pour réorganiser efficacement, il faut partir des deux extrémités i et j, et échanger les éléments quand ils ne sont pas classés. La réorganisation du tableau peut s'effectuer selon la méthode de Sedgewick (1975). Elle comporte les étapes suivantes : Placer le pivot à gauche (échanger Ai et As) Partitionner le tableau en partant des extrémités Ai et Aj, ce qui donne un élément de séparation Echanger l'élément de séparation obtenu avec pivot, ce qui ramène le pivot à sa place.

7 Algorithme 71 : partition (i : entier, j : entier, A : tableau): entier Donnée : i index de début de tableau Donnée : j index de fin de tableau Donnée modifiée : tableau A Résultat : index de pivot après la partition début s  choix_pivot(A, i, j)/* s indice initial du pivot choisi */ échanger A[i] et A[s] gauche  i droite  j tant que gauche  droite faire tant que (gauche < droite) and (A[gauche]  A[i]) faire gauche  gauche + 1 fin tant que (gauche  droite) and (A[droite] > A[i]) droite  droite – 1 fin si gauche < droite échanger A[gauche] et A[droite] fin échanger A[droite] et A[i] s  droite/* s indice définitif du pivot */ retourner s fin

8 Exemple : 8, 5, 9, 4, 2, 3, 7, 10, 6, 1 pivot  5 s (index pivot) = 1 i (index début) = 1 j (index fin) = 10 gauche  1 droite  10 gauche  2 Echanger A[gauche] avec A[droite] (8 avec 1) gauche  3 droite  6 Echanger A[gauche] avec A[droite] (9 avec 3) gauche  6 droite  5 Echanger A[droite] avec pivot (2 avec 5)

9 Pivot (5) a pris sa place. Refaire la même chose pour la partie du tableau située a gauche du pivot et pour la partie du tableau située à droite du pivot