Tutorat en bio-informatique Le 28 novembre 2012. Au programme… Algorithmes de tri dans un tableau (suite) Récursivité MAT1400.

Slides:



Advertisements
Présentations similaires
Explorer un espace d’états
Advertisements

Tris.
Portée des variables VBA & Excel
Introduction à l’Algorithmique
Les Algorithmes de tri.
Cours d'algorithmique 7 - Intranet 1 27 novembre 2006 Cours dAlgorithmique Dérécursion (début) : Équivalences entre programmes récursifs et programmes.
L’ interruption de boucle
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Algorithme et structure de données
Chapitre III. Algorithmique élémentaire des tableaux (recherche, tri)
Tris: Introduction IFT 1025: Programmation 2 Jian-Yun Nie.
Utilisation des tableaux
Javascript les spécificités du langage - Partie 7 -
CPI/BTS 2 Programmation Web Introduction au PHP
ALGORITHMES RECURSIFS
ALGORITHMIQUE Plan du cours Généralités -définition -importance
TD3 2 IMACS Romaric GUILLERM Algo-Prog en Ada.
Les algorithmes: complexité et notation asymptotique
Bibliothèque standard du C++
Les tris.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Base de programmation Script unity en c#.
© 2005 P. Van Roy. All rights reserved. 1 FSAB1402: Informatique 2 Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
Analyse d’Algorithmes
Structures de données IFT-2000
Structures de données IFT-10541
INF1101 Algorithmes et structures de données
Le langage Javascript pour le web
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.
Points importants de la semaine Les constantes. Les boucles. Les opérateurs relationnels Les opérateurs logiques.
P. Van Roy, LINF LINF1251: Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
IFT 6800 Atelier en Technologies d’information
CSI 1502 Principes fondamentaux de conception de logiciels
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.
Récursion IFT1025: Programmation 2 Jian-Yun Nie. Définition Le fait pour un programme ou une méthode de s'appeler lui-même. Par exemple –Définir la notion.
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Structures alternative et répétitive
La librairie assert.h.
Animateur : Med HAIJOUBI
Javascript 1° PARTIE : LES BASES
ALGORITHME DE TRI Le tri par insertion.
ALGORITHMIQUE Recherches : Tris : séquentielle, dichotomique
LES PILES ET FILES.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Boucles et Tests For( in ) { } While( ) { } Les exécutions conditionnelles (if.. else) peuvent être évitées avec des indexations logiques. Exemples: y=numeric(length(x));
1 Algorithmique et programmation en Itérations (boucles) Types numériques simples (suite)
Algorithmes de tri et de recherche
Méthodes de tri.
Cours 4 - Trois algorithmes de recherche dans un tableau
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
8PRO100 Éléments de programmation Les tableaux multi-dimensionnels.
CSI2520 (map abs ‘( )) ( ) (map (lambda (x y) (* x y)) ‘( ) ‘( )) ( )  Permet d’appliquer une fonction aux.
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Tutorat en bio-informatique Le 5 décembre Au programme… MAT1400 Algorithmes de tri dans un tableau (suite)
La Récursivité.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Pour les boucles FOR on a fait intervenir la boucles TANT QUE équivalentes dont on connaît calculer le temps d’exécution. Toutes le procédures de comptage.
Cours 5 - Trois algorithmes de tri d'un tableau
Algorithmes de tri.
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)
CPI/BTS 2 Programmation Web Tableaux Prog Web CPI/BTS2 – M. Dravet – 16/10/2003 Dernière modification: 16/10/2003.
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.
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.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
PhP 2. Tableaux et structures de contrôle. Les tableaux Définition –Rassemblement d’un ensemble de valeurs portant le même nom de variable –Types de tableaux.
Quelle est la valeur de S après exécution des instructions suivantes :
Transcription de la présentation:

Tutorat en bio-informatique Le 28 novembre 2012

Au programme… Algorithmes de tri dans un tableau (suite) Récursivité MAT1400

Tri bulle function triBulle(tab)‏ { do{ var inversionFaite = false; for(var i = 0; i < tab.length-1; i++) { if(tab[i] > tab[i+1]) { var temp = tab[i+1]; tab[i+1] = tab[i]; tab[i] = temp; inversionFaite = true; } while(inversionFaite); } Comme pour le tri insertion, dans le meilleur cas (un tableau déjà trié), le tri bulle prend un temps linéaire. Toutefois, dans le pire cas (???), cet algorithme prendra aussi un temps quadratique.

Tri bulle function triBulle(tab)‏ { do{ var inversionFaite = false; for(var i = 0; i < tab.length-1; i++) { if(tab[i] > tab[i+1]) { var temp = tab[i+1]; tab[i+1] = tab[i]; tab[i] = temp; inversionFaite = true; } while(inversionFaite); } Comme pour le tri insertion, dans le meilleur cas (un tableau déjà trié), le tri bulle prend un temps linéaire. Toutefois, dans le pire cas (plus petit élément en dernière position), cet algorithme prendra aussi un temps quadratique.

Tri bulle On peut optimiser un peu plus le tri bulle. Comment?

Tri bulle function triBulle2(tab)‏ { var n = tab.length; do{ var inversionFaite = false; for(var i = 0; i < n-1; i++) { if(tab[i] > tab[i+1]) { var temp = tab[i+1]; tab[i+1] = tab[i]; tab[i] = temp; inversionFaite = true; } n--; } while(inversionFaite); }

Tri bulle function triBulle3(tab)‏ { var n = tab.length; do{ var newN = 0; for(var i = 0; i < n-1; i++) { if(tab[i] > tab[i+1]) { var temp = tab[i+1]; tab[i+1] = tab[i]; tab[i] = temp; newN = i+1; } n = newN; } while(n > 0); }

Algorithmes de tri Il existe de bien meilleurs algorithmes de tri qui prennent un temps dans O(nlogn) dans le pire cas : Heapsort Mergesort Quicksort * * Important : Quicksort peut prendre un temps quadratique dans le pire cas (ce qui est rare), mais est dans O(nlogn) dans le cas moyen

Récursivité Une fonction récursive est une fonction qui s'appelle elle-même Les fonctions récursives possèdent une ou des conditions d'arrêt, qui permettent d'arrêter la récursivité Dans le code, on écrit toujours les conditions d'arrêt en premier dans la fonction

Récursivité function facto(n) { if (n <= 1) return 1; return n * facto(n-1); }

Récursivité function fibbo(n) { if (n <= 1) return 1; return fibbo(n-1) + fibbo(n-2); }

Récursivité terminale Lorsqu’une fonction récursive fait son appel récursif en dernier (il s’agit de la dernière instruction) En d’autres mots, il s’agit de récursivité terminale si la fonction n’a aucun autre travail à faire après avoir reçu le résultat de la récursion terminale

Récursivité terminale Exemple avec récursivité traditionnelle : function sumTrad(n) { if(n <= 1) return n; return n + sumTrad(n-1); }

Récursivité terminale Exemple avec récursivité terminale : function sumTerm(n) { function helper(n, sum) { if (n == 0) return sum; return helper(n-1, n+sum); } return helper(n, 0); }

Exercice 1 Écrivez la fonction fibbonacci avec récursivité terminale.

Exercice 1 (solution) function fibboTerm(n) { function helper(cpt, n_1, n_2) { if(cpt == 0) return n_1; return helper(cpt-1, n_1+n_2, n_1); } return helper(n, 1, 0); }

Récursivité terminale La récursivité terminale permet d’optimiser la vitesse d’exécution et l’espace utilisé dans la pile d’exécution Malheureusement, ce ne sont pas tous les compilateurs et interprètes qui optimisent la récursivité terminale Pour l’activer dans rhino : rhino -opt -1 monCode.js

Exercices (MAT1400) Chapitre 12.2, Analyse - concepts et contextes vol. 2 19) Calculez le volume du solide dressé sur le rectangle R = [-1, 1] x [-2, 2] et coiffé par le paraboloïde elliptique. 23) Calculez le volume du solide du premier quadrant compris dans le cylindre et le plan x = 2.