Méthodes de tri.

Slides:



Advertisements
Présentations similaires
Tris.
Advertisements

Animation pédagogique cycle 1
Cours n° 7 Standard Template Library II.
Calculs de complexité d'algorithmes
Les Algorithmes de tri.
3- Déclaration et accès aux objets
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.
Cours n° 8 Conception et Programmation à Objets
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
L’ interruption de boucle
INTRODUCTION.
Chapitre III. Algorithmique élémentaire des tableaux (recherche, tri)
Lycée Louis Vincent SEANCE 6 Python Les listes Lundi 25 novembre 2013.
Tris: Introduction IFT 1025: Programmation 2 Jian-Yun Nie.
Utilisation des tableaux
ALGORITHMES RECURSIFS
Structures de données linéaires
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
Les algorithmes: complexité et notation asymptotique
Chapitre VII. Tri Tri par tas Tri rapide.
Methode de Tri efficace
Concepts avancés en mathématiques et informatique appliquées
Nombres entiers. Ensembles de nombres
Les tris.
Python La programmation objet
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
FICHIERS : Définition : Algorithme général:
Ensembles Définition d’un ensemble. Opérations sur les ensembles. Accès, suppression et ajout d’éléments d’un ensemble. Fonctions permettant de manipuler.
INF1101 Algorithmes et structures de données
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
P. Van Roy, LINF LINF1251: Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL

Parallel Programming in C with MPI and OpenMP
Arbres binaires complets
Chapitre 9 Les sous-programmes.
Les Algorithmes de Tri Introduction Tri par Sélection
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.

Le langage C Structures de données
Chapitre 21 Collections Partie II Algorithmes  Algorithmes sur des List : sort binarySearch reverse shuffle fill copy  Algorithmes sur des Collections.
ALGORITHME DE TRI Le tri par insertion.
Réaliser par : Moh Fakhri Slama
ALGORITHMIQUE Recherches : Tris : séquentielle, dichotomique
INTRODUCTION.
Chapitre 6 Les traitements avancés
Algorithmes de tri et de recherche
Calcul parallèle => partitionner les données en sous-groupes associés aux processeurs. P0 P2 P1.
LE DIAGRAMME DE PARETO:
Arbres binaires et tables de hachage
Cours 4 - Trois algorithmes de recherche dans un tableau
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.
Chapitre 1 Nombres relatifs.
Tas et Tas Tri Exercice 1 Insérer dans un min-tas vide des numéros suivants:25, 17, 36, 2, 3, 100, 1, 19, 17 Supprimer.
La Récursivité.
Tutorat en bio-informatique Le 28 novembre Au programme… Algorithmes de tri dans un tableau (suite) Récursivité MAT1400.
Liste Une liste est une séquence d’éléments. Concept important: Chaque élément possède une position dans la liste. Notation: De quelles opérations a-t-on.
Cours 5 - Trois algorithmes de tri d'un tableau
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.
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.
Files de priorité (Priority Queue)
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.
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.
Algorithmique - Lecture / Ecriture - M me DJEBOURI. D. Faculté de Médecine salle informatique Année universitaire
الهيئة العامة لحماية المستهلك أساليب الترويج وتأثيراتها على المستهلك خليفة التونكتي - مستشار المنافسة - 1.
Techniques de décomposition
Cours 4 : Tris de Tableaux
Transcription de la présentation:

Méthodes de tri

Définition : Un algorithme de tri est, en informatique ou en mathématiques, 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. Les ordres les plus utilisés sont l’ordre numérique et l'ordre lexicographique. Source : Wikipédia

I- Tri à bulles : Principe : Comparaison 2 à 2 des éléments adjacents et échange s'ils ne sont pas ordonnés. Le programme s'arrête lorsqu'on parcours la liste sans faire d'échange Comme les bulles, les plus grands éléments remontent en fin de liste

Exercice : Ecrire la fonction triBulles(ls) qui permet de trier les éléments de la liste ls en utilisant la méthode de tri à bulles

I- Tri à bulles : def triBulles (ls): echange= True while echange==True : echange=False for i in range(0,len(ls)-1) : if(ls[i]>ls[i+1]): val=ls[i] ls[i]=ls[i+1] ls[i+1]=val echange=True

II- Tri par sélection : Principe : Recherche du plus petit élt du tableau et échange avec le premier élt Recherche du plus petit élt du tableau entre les positions 2 et n-1 et échange avec le second élt ... Recherche du plus petit élt entre les positions n-2 et n-1 et échange avec l'élt en position n-2

Exercice : Ecrire la fonction triSelection(ls) qui permet de trier les éléments de la liste ls en utilisant la méthode de tri par sélection.

Tri par sélection : def triSelection (ls): for i in range(0,len(ls)-1) : indice = i for j in range(i+1,len(ls)) : if ls[j] < ls[indice] : indice = j if indice != i : val=ls[indice] ls[indice] = ls[i] ls[i] = val return ls

III- Tri par insertion : Principe : La liste étant trié jusqu'à l'élt i-1, insérer l'élément i à sa place parmi les i premiers éléments

Exercice : Ecrire la fonction tri_Insertion(ls) qui permet de trier les éléments de la liste ls en utilisant la méthode de tri par insertion.

III- Tri par insertion : def tri_Insertion(T) : n=len(T) for i in range(1,n): x=T[i] j=i while j>0 and T[j-1]>x : T[j]=T[j-1] j=j-1 T[j]=x return T

IV- Tri rapide : Principe : L’algorithme de tri rapide, "quick sort", est un algorithme fondé sur la méthode de conception diviser pour régner; Son principe consiste à séparer l’ensemble des éléments en deux parties. Pour effectuer la séparation, une valeur pivot est choisie au hasard. Les valeurs sont réparties en deux ensembles suivant qu’elles sont plus grandes ou plus petites que le pivot. Ensuite, les deux ensembles sont triés séparément, suivant la même méthode.

IV- Tri rapide : Exemple : Soit la liste : Prenons comme pivot la dernière valeur pivot = 16 Nous obtenons donc : L1 = [4, 14, 3, 2] L2 = [23, 45, 18, 38, 42] A cette étape voici l'arrangement de L : L = L1 + pivot + L2  = [4, 14, 3, 2, 16, 23, 45, 18, 38, 42]

En appliquant la même démarche au deux sous-listes : L1 (pivot=2) et L2 (pivot=42) [4, 14, 3, 2, 16, 23, 45, 18, 38, 42] nous obtenons : L11=[ ] liste vide L12=[3, 4, 14] L1=L11 + pivot + L12 = (2,3, 4, 14) L21=[23, 38, 18] L22=[45] L2=L21 + pivot + L22 = (23, 38, 18, 42, 45)

Etapes tri rapide sur [a..b] : Partition [a..b] renvoie pivot & [a..b] = [x .. pivot']+[pivot]+[pivot'' .. y] Tri Rapide sur [pivot'' .. y] Tri Rapide sur [x .. pivot']

Fonction partitionner : def partitionner(T,premier,dernier) : p=T[dernier] j=premier for i in range(premier,dernier) : if T[i]<=p : T[i],T[j]=T[j],T[i] j=j+1 T[dernier],T[j]=T[j],T[dernier] return j

Fonction triRapide : def triRapide(T,premier,dernier) : if premier < dernier : pivot=partitionner(T,premier,dernier) triRapide(T,premier,pivot-1) triRapide(T,pivot+1,dernier)

V- Tri par fusion : Principe : Le tri fusion est un algorithme de tri basé sur la technique algorithmique diviser pour régner. L'opération principale de l'algorithme est la fusion, qui consiste à réunir deux listes triées en une seule.

Principe : Le principe de cet algorithme tend à adopter une formulation récursive : On découpe les données à trier en deux parties plus ou moins égales On trie les 2 sous-parties ainsi déterminées On fusionne les deux sous-parties pour retrouver les données de départ

Implémentation : L'implémentation de cet algorithme repose essentiellement en 2 fonctions : Fusion :Permet de fusionner deux listes triées de telle sorte que la liste résultante la soit aussi. triFusion : Une fonction récursive qui assure le découpage de la liste et l'appel de la fonction de fusion. Exemple : L1=[1,6,8,9] et L2=[2,3,7]

Fonction fusion : def fusion(L1, L2): res = [] ind1, ind2 = 0, 0 while ind1 < len(L1) and ind2 < len(L2): if L1[ind1] <= L2[ind2]: res.append(L1[ind1]) ind1 += 1 else: res.append(L2[ind2]) ind2 += 1

Fonction fusion : if ind1!=len(L1): res+=L1[ind1:] if ind2!=len(L2): res+=L2[ind2:] return res

Fonction triFusion : def triFusion(ls): if len(ls) <= 1: return ls moitie = len(ls) // 2 return fusion( triFusion(ls[:moitie]), triFusion(ls[moitie:])) ls=[9,1,8,6,3,2,7]