background preloader

Sorting Algorithm Animations

https://www.toptal.com/developers/sorting-algorithms

Related:  SNT NSIISN en Terminale SAlgorithmiqueAlgorithmiqueAlgorithmes de tri

ALGORITHMES DE TRI On désigne par "tri" l'opération consistant à ordonner un ensemble d'éléments en fonction de clés sur lesquelles est définie une relation d'ordre. Les algorithmes de tri ont une grande importance pratique. Ils sont fondamentaux dans certains domaines, comme l'informatique de gestion où l'on tri de manière quasi-systématique des données avant de les utiliser. L'étude du tri est également intéressante en elle-même car il s'agit sans doute du domaine de l'algorithmique qui a été le plus étudié et qui a conduit à des résultats remarquables sur la construction d'algorithmes et l'étude de leur complexité. Pour vous donner une idée de la difficulté du problème, je vous propose le petit jeu suivant.

Lecture du programme officiel de l'ISN Présentation du squelette du programme officiel de l’informatique et sciences du numérique, spécialité en terminale S. Les 4 parties du programme : Représentation de l’information Chapitre 05 - Programmation dynamique Le but de ce chapitre va être de présenter un paradigme de programmation alternatif à celui diviser pour régner. Nous allons en effet mettre en évidence l'une des faiblesses de celui-ci, en un mot des appels récursifs redondants, et voir comment y remédier. Cette nouvelle technique s'appellera programmation dynamique, et l'on verra qu'elle prend deux formes, l'une récursive et l'autre itérative. Après en avoir exposé le principe général, nous la mettrons en application sur deux grands problèmes classiques, celui du rendu de monnaie et celui du sac à dos. Nous allons dans cette partie pointer du doigt l'un des grands problèmes de la récursivité, puis proposer deux solutions pour y pallier.

Algorithmes de tris Introduction Les tris sont une des opérations les plus souvent effectuées par les ordinateurs, que ce soit dans les applications professionnelles (gestion des bases de données, des opérations bancaires...), la compression des données ou les jeux vidéo. On estime qu’un quart des cycles d’horloge des ordinateurs sont consacrés à des opérations de tri. Le coût énergétique de ces opérations de tris représente près de 2% de la consommation totale d’électricité en Europe. Sur des effectifs de plusieurs millions de données, les temps d’exécution des différents algorithmes de tris varient entre une dizaine de secondes et une dizaine de jours. D’où l’importance d’optimiser l’efficacité de ces algorithmes.

Comparatif des tris L'animation ci-dessous trace les courbes de performance de plusieurs algorithmes de tri : tri par sélection, tri par insertion, tri à bulle, tri shaker, tri à peigne, tri Gnome, tri Oyelami, tri Shell, tri fusion, tri rapide. Vous pouvez spécifier la taille des données à trier (entre 10 et 10000), la manière dont elle sont générées (triée dans l'ordre = le meilleur des cas, dans l'ordre inverse = le pire des cas ou au hasard), l'algorithme de tri à évaluer, la couleur de la courbe et les informations reccueillies (nombre d'échanges, nombre de comparaisons ou les deux). Utilisez ensuite le bouton "calculer" pour afficher la courbe. En cas de génération aleatoire de la série à trier, vous pouvez spécifier un nombre de "passes" (entre 1 et 1000 !) à effectuer.

Des puissances de 2 au code Andromède (2) Correction des exercices Python demandés dans l’article Des puissances de 2 au code Andromède. La correction proposée est évidemment non-exhaustive. Préliminaire : Les puissances de 2 Écrire les 11 premières puissances de 2. Il serait judicieux de savoir reconnaître les 11 premières puissance de 2. 1024 = ? Des puissances de 2 au code Andromède Mon but lors de l’enseignement de l’ISN est de simplifier au maximum l’introduction d’une notion, sachant que des cours complets très bien faits foisonnent déjà sur le Net, mon but étant d’accéder très rapidement à la partie pratique. Pour commencer cette nouvelle spécialité en Terminale S, je propose de démarrer tout de suite en Python avec les élèves et d’illustrer au maximum chaque partie du cours avec du code Python. Les élèves ayant tous fait de l’algorithmique en seconde et en première, je ne compte pas faire de cours Python à proprement parler dans un premier temps. Je compte leur présenter les instructions au fur et à mesure des besoins, en utilisant un simple appel à Python dans un terminal. Nous travaillons sous Ubuntu 12.04, qui est une distribution GNU-Linux, mais cela peut aussi se faire en bootant sur la clé ISN.

Le problème du sac à dos Comme vous l’avez peut-être remarqué, le niveau maître n’est déjà pas très facile. Pourtant, il n’y a pas beaucoup d’objets. Ce problème devient vite très compliqué à résoudre de tête lorsque le nombre d’objets est très important. Même les meilleurs algorithmes en informatique ont leurs limites lorsque le nombre d’objet est vraiment grand. Mémo Pseudo-codes 1. Algorithmique : écriture en pseudo-codes Le pseudo-code permet de décrire facilement un algorithme avec un vocabulaire simple et sans connaissance à priori du langage de programmation utilisé pour son implémentation machine. Ce travail d'algorithmique peut se faire sans ordinateur, sur une simple feuille de papier. En ayant comme connaissances quelques principes de programmation, comme les structures de boucles et les instructions, vous pouvez échanger en pseudo-code avec une autre personne qui utilise un langage de programmation que vous ne maitrisez pas.

Stabilité On dit qu'un algorithme de tri est stable s'il ne modifie pas l'ordre initial des clés identiques. Par exemple, imaginez que vous vouliez trier la collection de bouteilles ci-dessous par ordre de volume (le volume est indiqué sous la bouteille) : Si vous obtenez ceci, alors votre tri n'était pas stable : En effet, la bouteille noire de volume 1 se trouve maintenant avant la bouteille bleue de même volume alors qu'elle devrait être après. Il en est de même pour les deux bouteilles de volume 4 qui sont inversées par rapport à l'ordre initial.

Exercices de base avec Python Correction d’exercices Python proposés par Gérard Swinnen dans son livre « Apprendre à programmer avec Python ». Ce livre est téléchargeable au format PDF ici.La correction est proposée pour Python 2.7 et est évidemment non-exhaustive. Il existe une foule de sites Internet sur le langage Python et lorsque l’on débute en Python, il est bien difficile de trouver des sites qui permettent au néophyte une utilisation concrète et immédiate de scripts Python. J’ai au fil de mes surfs découvert ce livre qui est d’une utilisation totalement immédiate et extrêmement pratique.

Informatique et sciences du numérique - Édition spéciale Python !... - Éditions Eyrolles Enfin un véritable manuel d'informatique pour les lycéens et leurs professeurs ! Les quatre concepts de machine, d'information, d'algorithme et de langage sont au coeur de l'informatique, et l'objet de ce cours est de montrer comment ils fonctionnent ensemble. En première partie, nous apprendrons à écrire des programmes, en découvrant les ingrédients qui les constituent : l'affectation, la séquence et le test, les boucles, les types, les fonctions et les fonctions récursives. Dans la deuxième partie, on verra comment représenter les informations que l'on veut communiquer, les stocker et les transformer - textes, nombres, images et sons. On apprendra également à structurer et compresser de grandes quantités d'informations, à les protéger par le chiffrement.

Algorithme de tri par insertion C'est le tri du joueur de cartes. On fait comme si les éléments à trier étaient donnés un par un, le premier élément constituant, à lui tout seul, une liste triée de longueur 1. On range ensuite le second élément pour constituer une liste triée de longueur 2, puis on range le troisième élément pour avoir une liste triée de longueur 3 et ainsi de suite... Le principe du tri par insertion est donc d'insérer à la nième itération le nième élément à la bonne place. Mémo Pseudo-codes 1. Algorithmique : écriture en pseudo-codes Le pseudo-code permet de décrire facilement un algorithme avec un vocabulaire simple et sans connaissance à priori du langage de programmation utilisé pour son implémentation machine. Ce travail d'algorithmique peut se faire sans ordinateur, sur une simple feuille de papier. En ayant comme connaissances quelques principes de programmation, comme les structures de boucles et les instructions, vous pouvez échanger en pseudo-code avec une autre personne qui utilise un langage de programmation que vous ne maitrisez pas. Remarques :

Related:  Computer Programming