• Aucun résultat trouvé

Quelques algorithmes de tri

N/A
N/A
Protected

Academic year: 2022

Partager "Quelques algorithmes de tri"

Copied!
1
0
0

Texte intégral

(1)

Lyc´ee Michel Montaigne Math´ematiques-MP1

Quelques algorithmes de tri

Les algorithmes de tri forment l’un des grands sujets d’int´eret de l’algorithmique. Chacun peut se convaincre de la n´ecessit´e de disposer de tels outils (par exemple pour construire un annuaire invers´e). Trier un petit nombre de donn´ees est rapide et simple quelle que soit la strat´egie envisag´ee. Par contre, trier un grand nombre de donn´ees peut ˆetre tr`es couteux en temps ; il est donc important de disposer d’algorithmes efficaces.

L’objectif est de programmer diverses m´ethodes de tri d’un tableau par ordre croissant.

Un tableauaest une suite de N nombres r´eels< ai>.

1`ere m´ethode : tri par s´election

Principe : on cherche le plus petit ´el´ement du tableau, c’est `a dire l’entier m tel queai >am pour tout i. Une fois m trouv´e, on ´echange a1 etam. Puis on recommence avec< a2, . . . , aN >.

Ecrire cet algorithme.

Remarque : son cout estO(N2) op´erations.

2`eme m´ethode : tri `a bulle

Principe : on parcourt la suite a en intervertissant toute paire d’´el´ements cons´ecutifs (aj1, aj) non or- donn´ees. Apr`es un parcours, l’´el´ement maximum se retrouve en derni`ere position. On recommence alors avec

< a1, . . . , aN−1 >.

Ecrire cet algorithme.

Remarque : son cout estO(N2) op´erations, l´eg`erement moindre que le tri par s´election.

3`eme m´ethode : tri par insertion

Principe : on prend deux ´el´ements qu’on range par ordre croissant. Ensuite, on prend un troisi`eme ´el´ement et on le met `a sa place et on recommence avec un quatri`eme ´el´ement etc...

Ecrire cet algorithme.

Remarque : son cout estO(N2) op´erations, plus efficace que les deux pr´ec´edents.

4`eme m´ethode : tri rapide

L’algorithme dit du ”tri rapide” appartient `a l’ensemble des algorithmes ”diviser pour r´egner”. La cl´e pour le comprendre et de comprendre la phase de partitionnement :

– choisissez un ´el´ement dans la liste `a trier.

– partager la liste `a trier en deux sous-listes : les ´el´ements plus petits que le nombre choisit puis les plus grands.

– `a la fin, on ins`ere le nombre choisit entre ces deux listes.

Une fois le partitionnement op´er´e, on n’a pas encore compl´etement tri´e le tableau. Cette proc´edure s´epare la liste en deux sous-listes plus simples `a trier (car elles ont moins d’´el´ements) que la liste originale. On r´ep`ete alors l’op´eration sur les sous-listes pour obtenir 4 sous-listes plus simples `a trier. Et ainsi de suite jusqu’`a avoir tri´e l’int´egralit´e de la liste.

Par exemple, la proc´edure de partitionnement peut s’´ecrire :

> partition:= proc(l::list) local l1,l2,x,i;

l1:=[];

l2:=[];

x:=l[1];

for i from 2 to nops(l) do if l[i]<x then

l1:=[op(l1),l[i]];

else

l2:=[op(l2),l[i]];

fi;

od;

[l1,[x],l2];

end;

Ecrire `a l’aide de cette proc´edure de partitionnement la proc´edure du tri rapide. On donnera le programme r´ecursivement.

Références

Documents relatifs

a) Pour un ensemble donn´ e A, on appelle cardinal de A la classe de tous les ensembles qui lui sont ´ equipotents (pour des raisons li´ ees ` a l’axiomatique de la th´ eorie

Cette fonction renverra deux tableaux des temps moyens, suivant la taille du tableau à trier (un tableaupour le tri par sélection et un tableau pour le tri par insertion). On

Il existe une conjecture (dite de Syracuse) qui dit que quelque soit l'entier choisi au départ, on nit toujours par trouver 1 au bout d'un certain nombre d'étapes.. En admettant que

Un tel p existe car l’ensemble des entiers plus petit que n, premiers avec n est toujours non vide quelque soit n&gt;2 ; car n-1 et n sont toujours premier entre eux ; n – (n-1) =

Diophante choisit deux entiers et n avec et puis il demande à Zig de trouver une partition de en entiers positifs et distincts de sorte qu’en les plaçant de

Si Diophante propose « galamment » à Hippatie de commencer la partie, c’est qu’il a identifié au moins un nombre cible X compris entre 2005 et 5000 qui donne une position

en 26 minutes, soit un gain d’environ 11 minutes par rapport au premier programme. On avance, le gain est conséquent mais, pour être critique, on ne peut pas dire que la division

De plus, dans ces séances de calcul mental on peut introduire progressivement le produit de deux décimaux comme ci-dessous avant d’en arriver au chapitre..