GithubHelp home page GithubHelp logo

php_algo_tri's Introduction

Pair Programming : Les algorithmes de tri

Aujourd'hui, travaillez en pair programming. La personne qui rédige le code est appelée conducteur (driver). La seconde personne, appelée observateur (observer), assiste le conducteur en décelant les imperfections, en vérifiant que le code implémente correctement le design et en suggérant des alternatives de développement.

Le tri bulle

###Principe L'algorithme parcourt le tableau et compare les éléments adjacents. Lorsque les éléments ne sont pas dans l'ordre, ils sont échangés.

Après un premier parcours complet du tableau, le plus grand élément est forcément en fin de tableau, à sa position définitive. En effet, aussitôt que le plus grand élément est rencontré durant le parcours, il est mal trié par rapport à tous les éléments suivants, donc échangé à chaque fois jusqu'à la fin du parcours.

Après le premier parcours, le plus grand élément étant à sa position définitive, il n'a plus à être traité. Le reste du tableau est en revanche encore en désordre. Il faut donc le parcourir à nouveau, en s'arrêtant à l'avant-dernier élément. Après ce deuxième parcours, les deux plus grands éléments sont à leur position définitive. Il faut donc répéter les parcours du tableau, jusqu'à ce que les deux plus petits éléments soient placés à leur position définitive.

Le tri par insertion

Principe

Dans l'algorithme, on parcourt le tableau à trier du début à la fin. Au moment où on considère le i-ème élément, les éléments qui le précèdent sont déjà triés. Pour faire l'analogie avec l'exemple du jeu de cartes, lorsqu'on est à la i-ème étape du parcours, le i-ème élément est la carte saisie, les éléments précédents sont la main triée et les éléments suivants correspondent aux cartes encore mélangées sur la table.

L'objectif d'une étape est d'insérer le i-ème élément à sa place parmi ceux qui précèdent. Il faut pour cela trouver où l'élément doit être inséré en le comparant aux autres, puis décaler les éléments afin de pouvoir effectuer l'insertion. En pratique, ces deux actions sont fréquemment effectuées en une passe, qui consiste à faire « remonter » l'élément au fur et à mesure jusqu'à rencontrer un élément plus petit.

Le tri par insertion dichotomique

Principe.

Nous reprenons le même principe que le tri par insertion, c'est à dire

  • prendre le premier élément de la partie non trié,
  • le ranger dans la partie du tableau formé de la partie triée, augmentée de la place de cet élément.

Il suffit de répéter ces opérations avec le reste du tableau. La partie triée croît d'un élément à chaque itération, la partie non triée décroît d'un élément. Le tri s'arrête lorsque la partie non triée ne comporte qu'un seul élément.

Mais la recherche de la place d'un élément dans le tableau trié se fait par dichotomie.

Rappelons le principe :

Si le contenu d'un tableau est rangé par ordre croissant, il suffit de comparer la valeur cherchée avec l'élément situé au milieu du tableau :

  • s'ils sont égaux, on a trouvé sa place.
  • si la valeur cherchée est supérieure, elle se trouve dans la moitié supérieure.
  • si la valeur cherchée est inférieure, elle se trouve dans la moitié inférieure.

On applique le même algorithme à la moitié du tableau restant, et ainsi de suite, jusqu'à ce que l'on ait trouvé la place de la valeur cherchée.

Bonus : Le tri Shell

Lisez la description de l'algo ici

Question

  • Parmi tous ces tris, lesquels sont les plus efficaces.

php_algo_tri's People

Contributors

jeansairien avatar erwannface avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.