TD3- Les fonctions de tri et la notion de complexité
Notions du TD
Tri de tableaux – Algorithmes de tri – Notion de complexité – Introduction des collections d'objet – Évaluation de la durée
d'exécution d'un algorithme
Corps du TD
Différentes applications exigent de trier des données. Il s'agit par exemple de classer des hedges funds en
fonction de leurs niveaux de performance, il s'agit de classer des titres en fonction de leur niveau de risque, il s'agit de
classer des noms par ordre alphabétique ou par les résultats qu'ils obtiennent... Sans prévoir une application directe, on
introduit les notions de tri et leur applications sur des tableaux et des collections de données. Les tableaux sont déjà des
collections de données, mais il existe d'autres formes de collections qui sont de taille variables. Celles-ci relèvent des
connaissances théoriques sur l'objet, qui n'ont pas encore été vues, mais qui le seront ensuite.
Dans un premier temps, on ne s'intéresse qu'aux tableaux, avant d'implémenter un algorithme pour le tri des
données pour le cas d'une collection. Dans tout ce qui suit, on ne s'intéresse qu'aux tableaux d'entiers. Il est bien évident
que le raisonnement serait le même pour n'importe quels types de tableaux.
Etape 1 : un premier algorithme de tri de données : le tri à bulles
Un algorithme de tri classique est le tri à bulles. S'il est loin d'être optimal, voire s'il est parmi les algorithmes de
tri les plus coûteux en temps, il est traditionnellement le premier algorithme de tri présenté en raison de sa simplicité
relative par rapport aux autres algorithmes.
On veut trier un tableau par ordre croissant. L'algorithme consiste à parcourir un tableau élément par élément.
On considère d'abord le premier élément du tableau, on le compare au deuxième élément du tableau : si le deuxième
élément du tableau est inférieur au premier élément, on échange ces deux premiers éléments. On considère ensuite le
deuxième élément par rapport au troisième élément. On échange ces éléments si le troisième élément est inférieur au
deuxième élément etc... Après un premier parcours du tableau, on parcourt une seconde fois le tableau, puis une
troisième etc... On continue de parcourir le tableau tant qu'il doit procéder à au moins un échange entre les éléments du
tableau.
Un exemple d'utilisation de cet algorithme, on considère le tableau suivant :
-1 -6 3 -2 7
On commence l'algorithme de tri. Au début, l'algorithme compare les deux premiers éléments. Il apparaît -1 > -6, donc il
Cours de C++ - Rémi Dorat