Ecrire un algorithme permettant de trier par ordre décroissant les éléments d’un tableau. C'est à dire quand j'ai fait un sort de mon tableau pour trier bien mon tableau, j'ai besoin d'inverser l'ordre. Définition d’un algorithme de Tri Les tableaux permettent de stocker plusieurs éléments de même type au sein d’une seule entité, Lorsque le type de ces éléments possède un ordre total, on peut donc les ranger en ordre croissant ou décroissant, Trier un tableau c’est donc ranger les éléments d’un tableau … Pour les trois plus lents, on remarque que le «pire» d'entre eux est, en moyenne, le tri à bulles, puis viennent le tri par insertion et le tri par sélection (avec des écarts de performance toutefois très nets entre eux trois).Le lissage par moyenne mobile nous permet également de voir se dégager une tendance, une courbe théorique débarrassées des impuretés (pire cas et meilleur cas). On voit ainsi qu'une complexité en Après cette section très théorique, retournons à la pratique.
Ces temps seront enregistrés dans un fichier texte de manière à pouvoir ensuite transférer les résultats dans un tableur (Calc ou Excel par exemple) et dresser un graphique. C'est gratuit ! Que fait-on ? Le principe est simple mais rudement efficace (un peu moins que le tri rapide toutefois). En fait, nous allons créer une fonction tri_fusion qui sera récursive et qui s'appliquera à des tranches de tableaux (les deux moitiés de tableaux, puis les quatre moitiés de moitiés de tableaux, puis …) avant de les refusionner. Lors du chapitre sur les tableaux (partie III), nous avions abordé l'algorithme de tri par sélection (Exercice 3).Cet algorithme consistait à trier un tableau d'entiers du plus petit au plus grand en comparant progressivement les éléments d'un tableau avec leurs successeurs, quitte à effectuer un échange (n'hésitez pas à relire cet exercice si besoin). En revanche, nous étudierons différentes techniques de tri, parfois surprenantes. Je vous conseille d'essayer par vous-même afin de faciliter la compréhension de la solution que je vous fournis :Nous verrons un peu plus tard pourquoi j'ai du utiliser une procédure plutôt qu'une fonction pour effectuer ce tri.Ah ! Prenons le tableau ci-dessous :L'idée est de «scinder» ce tableau en cinq cases disjointes que l'on va «refusionner» ensuite, mais dans le bon ordre. Un algorithme de tri est un algorithme qui permet d'organiser une collection d'objets selon une relation d'ordre déterminée. VAR V : tableau[1..N] de réel N, i, j : entier AUX : réel. Pour trier notre arbre par tas, nous allons le tamiser en commençant, non pas par la racine de l'arbre, mais par les derniers nœuds (en commençant par la fin en quelque sorte). Prenons par exemple l'algorithme dont nous parlions précédemment (qui lit un tableau et teste chacune de ses cases) : si le tableau a 100 cases, l'algorithme effectuera 100 tests ; si le tableau à 5000 cases, l'algorithme effectuera 5000 tests ; si le tableau a C'est pas «grosso modo égal à n» ! Dans ce cas, l'algorithme de tri fusion acquièrent une complexité comparable à celle du tri rapide en réalisant moins de comparaisons, mais devient gourmande en mémoire.L'Algorithmique constitue une branche, peut-être la plus complexe, des Mathématiques et de l'Informatique.Vous devez donc vous interroger sur l'efficacité des algorithmes que vous rédigez.Effectuez des essais grandeur nature avec de grandes quantités de données et comptez le nombre d'opérations et de tests nécessaires pour juger de la pertinence de votre méthode. Enfin, nous étudierons la complexité de ces différents algorithmes de manière empirique en effectuant quelques mesures.Ce chapitre est davantage un chapitre d'algorithmique que de programmation. Cette opération permet d'obtenir en fin du i                  SI V[j]>V[j+1] ALORS                   AUX ¬ V[j]                   V[j] ¬ V[j+1]                   V[j+1] ¬ AUXExécuter à la main cet algorithme avec les vecteurs suivants :                   SI (V[J+1] < V[j]) ALORS                           AUX¬V[J+1]                           V[J+1] ¬V[J]                           V[J] ¬ AUX                           atonpermuté¬vrai                  SI V[j]>V[j+1] ALORS                   AUX ¬ V[j]                   V[j] ¬ V[j+1]                   V[j+1] ¬ AUX