I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB 2009-2010 - GFDL 1.2 CM 6/8 v1.1.

Slides:



Advertisements
Présentations similaires
Fonctions & procédures
Advertisements

Chapitre III. Algorithmique élémentaire des tableaux (recherche, tri)
Algorithmique et programmation Informatique Cours 11 26/11/2001.
Utilisation des tableaux
Structures de données IFT-2000

Les Algorithmes de Tri Introduction Tri par Sélection

ALGORITHME DE TRI Le tri par insertion.
Méthodes de tri.
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.
Cours 5 - Trois algorithmes de tri d'un tableau
Algorithmes de tri.
Structures de données IFT-2000
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.
1 UE Intro Opti L3 INFO UPSud Programmation linéaire en variables entières (ou mixtes) : résolution approchée par heuristique
Programmation Objet en Python L2 (Informatique) 2011 – 2012 CM : Jerzy Karczmarczuk – TD/TP : Véronique Terrier (Cherchez-nous.
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Tableaux et Pointeurs Chaînes de Caractères Programmation Impérative II.
I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB GFDL 1.2 CM2 version 2.
I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB GFDL 1.2 CM 7/8 v1.2.
Algorithmique ‘’ Un algorithme est une suite finie et non-ambiguë d’instructions permettant de donner la réponse à un problème. ‘’ Niveau de difficulté.
Tableaux en C Mardi 2/05.
Semaine 8 Retour sur les tableaux : fonctions et récursivité
Suites ordonnées ou mettre de l’ordre
Introduction au Langage Pascal
Algorithmiques Abdelbasset KABOU
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Techniques de décomposition
Algorithmique Avancée et Complexité Chap2:Complexité et Optimalité
Cours 4 : Tris de Tableaux
I21 Algorithmique et programmation II
Principes de programmation (suite)
Algorithmique Avancée et Complexité Chap3:Diviser pour Régner
Information, Calcul, Communication
Un Algorithme , c'est Quoi ?
Initiation à la programmation impérative et algorithmique
POL1803: Analyse des techniques quantitatives
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
VI. Tri par tas (Heap sort)
MOYENNE, MEDIANE et ECART TYPE d’une série statistique
Introduction à l’algorithmique et à la programmation Modified by Dr. Mhamed Zineddine INSA Euro-Med Taken from:INSA de Lyon, Departement Telecommunications,
Science du traitement rationnel de l'information
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Cours N°9: Algorithmiques Les Tableaux 1
Les tableaux.
Introduction à l’algorithmique et à la programmation Modified by Dr. Mhamed Zineddine INSA Euro-Med Taken from:INSA de Lyon, Departement Telecommunications,
1 RECURSIVITE PRESENTATION Ch. PAUL ALGORITHMIQUE Présentation de la récursivité.
1 UMLV  Université de Marne-la-Vallée STRUCTURES DE DONNÉES Maxime CROCHEMORE
Type Concret – Type Abstrait
Calcul Scientifique Initiation à SCILB
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
Algorithme de tri - Tri à bulles
Information, Calcul, Communication
2/24/2019 Outils informatiques Séance 2 : les styles 1 1.
RABAH M ed Ali 2018/2019
Tris Simples/Rapides.
Exercices récapitulatifs
Piles et files.
Tableaux Cours 06.
Stream, parallelStream, ForEach, ForEachOrdered & Filter
LISTES.
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.
Gestion de liste: Réalisé par: Amal ABBOU Mariam El ALLAMI Tri Filtre.
Structure de données Les listes.
Tableaux : Algorithmes de recherches
La programmation dynamique
Transcription de la présentation:

I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB GFDL 1.2 CM 6/8 v1.1

i21 IEM-UB GFDL Plan du cours I.Rappels sur Java - types, instructions, procédures, fonctions... II.Programmation par objet - classe, composition, héritage, initiation à la modélisation Bonus III.Types de données et algorithmes - listes, piles, files, arbres, algorithmes de tri, algorithmes récursifs

i21 IEM-UB GFDL Types de données et algorithmes 1.Récursivité 2.Algorithmes de tri 3.Types de données

i21 IEM-UB GFDL Types de données et algorithmes 1.Récursivité 2.Algorithmes de tri 2.1 Définitions 2.2 Tri par sélection 2.3 Tri par insertion 2.4 Tri par échange (tri à bulle, tri rapide) 2.5 Tri fusion 2.6 Comparaisons des méthodes 2.7 Défi à $ 1.Types de données

i21 IEM-UB GFDL Tri : définition ● Un tableau d'entier t est dit trié en ordre croissant si pour tout indice i<j, t[i]<=t[j] ● Un tableau d'entier t est dit trié en ordre décroissant si pour tout indice i =t[j] ● Ex : pas trié : trié en ordre croissant : ordre décroissant

i21 IEM-UB GFDL Tri : définition ● S'étend à n'importe quelle relation d'ordre ● Ex. tableau de chaînes, ordre alphabétique ''Spirou'' ''Zorglub'' ''Fantasio'' : pas trié ''Fantasio'' ''Spirou'' ''Zorglub'' : ordre croissant ''Zorglub'' ''Spirou'' ''Fantasio'' : ordre décroissant

i21 IEM-UB GFDL Tri : définition ● Plusieurs clés ● Ordre lexicographique : (a,b) < (c,d) ssi a<c ou (a=c et b<d) ● Ex. Ordre lexicographique sur nom puis prénom (Onyme,Jeanne) (Saisrien,Jean) (Onyme,Anne) : non trié (Onyme,Anne)(Onyme,Jeanne)(Saisrien,Jean) : ordre croissant (Saisrien,Jean)(Onyme,Jeanne)(Onyme,Anne): ordre décroissant

i21 IEM-UB GFDL Tri : définition ● Algorithme : description non-ambiguë des actions à effectuer pour réaliser une tâche donnée, indépendante du langage de programmation ● Programme (ou méthode) associé à un algorithme : sa traduction en un langage de programmation (ex. Java)

i21 IEM-UB GFDL Tri : définition ● Algorithmique : sciences des algorithmes ● Concevoir un algorithme : difficile ! Longue réflexion papier-crayon avant programmation ● (un) Algorithme de tri : (une) description des actions à effectuer pour trier une collection de données (ex. un tableau) ● Dans la suite, objectif : ordre croissant

i21 IEM-UB GFDL Types de données et algorithmes 1.Récursivité 2.Algorithmes de tri 2.1 Définitions 2.2 Tri par sélection 2.3 Tri par insertion 2.4 Tri par échange (tri à bulle, tri rapide) 2.5 Tri fusion 2.6 Comparaisons des méthodes 2.7 Défi à $ 1.Types de données

i21 IEM-UB GFDL Tri par sélection ● Principe : – trouver le minimum du tableau – le placer en tête du tableau – recommencer avec le reste du tableau ● Tri par sélection directe : parcours séquentiel du tableau pour trouver le minimum

i21 IEM-UB GFDL Tri par sélection directe : exemple | (2) 2| (3)6 2 3| (5) | etc |fini ● |fin de la partie triée, () minimum

i21 IEM-UB GFDL Tri par sélection directe ● Algorithme : triSelectionDirecte(tableau t) pour i allant de 0 à taille(t)-2 entier indiceMin = i; pour j allant de i+1 à taille(t)-1 si (t[j]<t[indiceMin]) indiceMin=j; échanger les valeurs de t[i] et t[indiceMin]

i21 IEM-UB GFDL Types de données et algorithmes 1.Récursivité 2.Algorithmes de tri 2.1 Définitions 2.2 Tri par sélection 2.3 Tri par insertion 2.4 Tri par échange (tri à bulle, tri rapide) 2.5 Tri fusion 2.6 Comparaisons des méthodes 2.7 Défi à $ 1.Types de données

i21 IEM-UB GFDL Tri par insertion ● Principe : – La partie gauche du tableau contient les données déjà triées – Pour tout nouvel élément, trouver sa position dans la partie gauche, et l'insérer ● Tri par insertion séquentielle : – parcourir séquentiellement le tableau pour trouver la position

i21 IEM-UB GFDL Tri par insertion séquentielle 2| (5) |(1) |(6) |(3) |(10) |(7) | fini

i21 IEM-UB GFDL Tri par insertion séquentielle ● Algorithme: triSequentiel(t) pour i allant de 2 à longeur(t)-1 courant=t[i] j=i-1 courantEstSupérieur=vrai tant que j>0 et courantEstSupérieur si t[j]<courant alors courantEstSupérieur=faux sinon t[j+1]=t[j] j=j-1 t[j+1]=courant

i21 IEM-UB GFDL Types de données et algorithmes 1.Récursivité 2.Algorithmes de tri 2.1 Définitions 2.2 Tri par sélection 2.3 Tri par insertion 2.4 Tri par échange (tri à bulle, tri rapide) 2.5 Tri fusion 2.6 Comparaisons des méthodes 2.7 Défi à $ 1.Types de données

i21 IEM-UB GFDL Tri par échange ● Principe : tableau t non trié ● indice ● valeur ● Propriété (élémentaire) : si un tableau t n'est pas trié en ordre croissant, il existe i t[j] ● Par exemple : t[0]>t[1] ● Les échanger pour supprimer ce désordre local

i21 IEM-UB GFDL Tri à bulle (bubble sort) ● Principe : réorganiser localement le tableau de proche en proche jusqu'à ce qu'il ne subsiste plus aucun désordre ● Pour un indice i parcourant les indices du tableau – si t[i]>t[i+1], inverser t[i] et t[i+1] ● Si un désordre a été rencontré, recommencer ● Sinon, terminé

i21 IEM-UB GFDL Exemple ● 1er passage (12>11) : échange 11 (12> 10) : échange (12>9) : échange (12>5) : échange (12>8)3 6 2 : échange (12>3)6 2 : échange (12>6)2 : échange (12>2): échange : on a rencontré des désordres, on recommence

i21 IEM-UB GFDL Exemple ● 2eme passage : (11>10) : échange (11<12):pas d'échange – on a rencontré un désordre, on recommence ● A chaque fois, les petites valeurs remontent le tableau (les petites bulles vont vers la surface)

i21 IEM-UB GFDL Algorithme du tri à bulle ● Algorithme TriBulle (tableau t) booléen désordre faire désordre=faux pour entier i de 0 à taille(t)-2 si (t[i] > t[i+1]) inverser(t,i,i+1); désordre=vrai; tant que désordre

i21 IEM-UB GFDL Tri rapide (quick sort) Principe:Tri par échange et partition Tableau de taille 1, fini Sinon, choisir une valeur pivot dans le tableau (ex. milieu) Partition en 3 parties (gauche,pivot,droite) – (5) – (gauche) (pivot) (droite)

i21 IEM-UB GFDL Tri rapide – (5) – (gauche) (pivot) (droite) ● Partie gauche : transférer les éléments [x] plus grands que le pivot à droite – 2 [11] 3 [9] (5) – (gauche) (pivot) (droite) – 2 3 (5)

i21 IEM-UB GFDL Tri rapide ● Partie droite : transférer les éléments [x] plus petits que le pivot à gauche – 2 3 (5) 8 [4] – (gauche) (pivot) (droite) – ● Le pivot est alors à sa place définitive ● On recommence la même procédure sur la partie gauche, puis la partie droite ● Algorithme récursif !

i21 IEM-UB GFDL Tri rapide – 4 (2) – (2) – 2 (3) – (10) 11 9 – – (8) – ● (gras : positionné, () : pivot)

i21 IEM-UB GFDL Faire les partitions en place ● Tri en place : pas de nouveau tableau intermédiaire (contraire : tri par recopie) ● Astuce : deux curseurs dans la liste gauche et droite, partant des extrémités ● Sauter les valeurs bien placées ● Si on trouve une valeur mal placée de chaque côté, on les échange

i21 IEM-UB GFDL Partition en place (gauche) (pivot) (droite) : * curseurs (5) * * : 2,10 bien placées * * : 11,4 mal placées on permute (5) * * : 3,8 bien placées * * : 9,5 on permute (5) : fini

i21 IEM-UB GFDL Tri rapide ● Algorithme : triRapide(t,gauche,droite) i=gauche ; j=droite pivot=t[arrondi((i+j)/2)] répéter tant que t[i]<pivot faire i=i+1 tant que t[j]>pivot faire j=j-1 si (i<=j) alors échanger(t,i,j), i=i+1,j=j-1 tant que i<=j si (gauche<j) triRapide(1,gauche,j) si (droite>i) triRapide(1,i,droite)

i21 IEM-UB GFDL Tri rapide ● Pour tout trier : triRapide(t,0,taille(t)-1)

i21 IEM-UB GFDL Types de données et algorithmes 1.Récursivité 2.Algorithmes de tri 2.1 Définitions 2.2 Tri par sélection 2.3 Tri par insertion 2.4 Tri par échange (tri à bulle, tri rapide) 2.5 Tri fusion 2.6 Comparaisons des méthodes 2.7 Défi à $ 1.Types de données

i21 IEM-UB GFDL Tri fusion ● Algorithme récursif ● Supposons savoir trier un tableau de taille n ● Pour tableau de taille n+1 : – le couper en 2 parties de taille <= n – trier (récursivement) chaque partie (on sait faire) – fusionner (interclasser) le résultat (plus facile)

i21 IEM-UB GFDL ● ● ( )( ) ● (2 6 3) (8 5) (9 10) (11 12) ● (2 6)(3) (8)(5)(9)(10)(11)(12) ● (2)(6) ● taille 1 : tri évident Exemple : 1.dichotomie

i21 IEM-UB GFDL Exemple : 2.fusion (interclassement) ● ● ( )( ) ● (2 3 6) (5 8) (9 10) (11 12) ● (2 6) (3)(8)(5)(9)(10)(11)(12) ● (2) (6)

i21 IEM-UB GFDL Algorithme TriFusion (tableau tab,int gauche, droite) si gauche ≠ droite int median = arrondi ( gauche+ droite)/2; triFusion(tab,gauche,median); triFusion(tab,median+1,droite); fusion(tab,gauche,median,droite)

i21 IEM-UB GFDL Algorithme ● Fusion : 1 curseur sur chaque tableau à fusionner et comparaison ● A B ● (1) (2) > 1, avancer A ● 1 (4)6 8 (2) > 1 2, avancer B ● 1 (4)6 8 2 (5)8 9 -> 1 2 4, avancer A ● 1 4(6)8 2 (5)8 9 -> av. B ● etc. ● Quand l'un à fini : copier la fin de l'autre