Universit´e de Provence
Master1 Math´ematiques et applications 2009-2010
Algorithmique et programmation. TD1
1- Deux tris ´el´ementaires
On se propose d’´etudier deux algorithmes visant `a trier par ordre croissant les ´el´ements d’un
tableau td’entiers. Dans tout l’´enonc´e on notera t[i .. j] la partie du tableau compos´ee des ´el´ements
d’indice k,ikj. Par convention, cette partie est vide si i > j.
Tri par s´election
Le tri par s´election consiste `a it´erer le processus suivant : si t[0 .. (i1)] est la partie du tableau
d´ej`a tri´ee, chercher l’indice mdu minimum de la partie restante t[i..n] et ´echanger t[i] et t[m].
1. Exprimer en fran¸cais structur´e cet algorithme, d´emontrer sa correction et calculer sa com-
plexit´e en temps.
2. D´efinir dans la classe T ri selection munie de la variable tcorrectement d´eclar´ee, une m´ethode
min qui prend en entr´ee un indice iet qui renvoie l’indice du minimum de t[i..n] o`u nd´esigne
l’indice de la derni`ere case du tableau t.
3. D´efinir une m´ethode echange qui prend en param`etres deux entiers iet jet qui ´echange le
contenu des cases t[i] et t[j].
4. D´efinir une m´ethode tri qui prend en param`etre un tableau d’entiers a, et qui op`ere sur ale
tri par s´election. Elle utilisera bien sˆur, les m´ethodes d´efinies aux 2 questions pr´ec´edentes.
Tri par insertion
Le tri par insertion consiste `a it´erer le processus suivant : si t[0 .. (i1)] est la partie du tableau
d´ej`a tri´ee, placer `a l’endroit correct la valeur t[i] dans la liste t[0..(i1)] de fa¸con `a ce que t[0..i]
soit tri´ee.
1. Exprimer en fran¸cais structur´e cet algorithme. On structurera l’algorithme de telle sorte qu’il
fasse appel `a un algorithme placer qui prend en entr´ee un indice iet qui, en supposant que
t[0 .. (i1)] est tri´ee par ordre croissant, ins`ere correctement la valeur t[i] dans t[0 .. (i
1)]. On donnera deux version de l’algorithme placer, l’une utilisant notamment la recherche
dichotomique.
2. D´emontrer sa correction.
3. Calculer sa complexit´e en temps (pour les deux versions).
4. D´efinir dans une classe T ri insertion munie de la variable tcorrectement d´eclar´ee, une
m´ethode placer qui prend en entr´ee un indice iet qui, en supposant que t[0 .. (i1)] est
tri´ee par ordre croissant, ins`ere correctement la valeur t[i] dans t[0 .. (i1)].
5. D´efinir dans la classe T ri insertion une m´ethode tri qui prend en param`etre un tableau
d’entiers a, et qui op`ere sur ale tri par insertion.
Programme principal
Ecrire une classe T ris, contenant la m´ethode main, qui op`ere un tri par s´election ou un tri par
insertion sur une liste d’entiers donn´es en param`etre du programme et affiche `a l’´ecran la liste une
fois tri´ee.
2- Coefficients binˆomiaux
Pour tout couple d’entiers (n,p) tels que 0 pn, on note Cp
nle nombre de combinaisons `a p
´el´ements dans un ensemble `a n´el´ements. Ces nombres Cp
nsont aussi appel´es coefficients binˆomiaux
car ils interviennent dans la formule du binˆome. On rappelle les formules suivantes qui permettent
de calculer tout coefficient binˆomial :
(F)(Cn
n= 1 et C0
n= 1
Cp
n=Cp1
n1+Cp
n1pour tout couple (n, p) tel que 1 p(n1)
On se propose d’´ecrire de deux mani`eres diff´erentes un algorithme qui ´etant donn´es deux nombres
entiers pet nsuppos´es valides, calcule le nombre Cp
n.
1. Donner l’algorithme r´ecursif induit par les formules (F).
2. On note t(n, p) le nombre d’additions n´ecessaires au calcul de Cp
npar la m´ethode pr´ec´edente
(les d´ecr´ementations d’indices ne seront pas compt´ees comme additions : seules seront prises
en compte les sommes de coefficients binˆomiaux). Montrer que t(n, p) = Cp
n1. En d´eduire,
pour un entier ndonn´e, le nombre moyen pour 0 pn, d’additions n´ecessaires au calcul
de Cp
n.
3. Cet algorithme est-il efficace ? Pouvait-on s’en douter ? Justifier.
On peut aussi utiliser les formules (F) pour donner un algorithme it´eratif. On emploie pour
cela la m´ethode du triangle de Pascal : c’est une matrice dont les lignes et les colonnes sont
num´erot´ees `a partir de 0 et dans laquelle Cp
nse trouve `a l’intersection de la ligne num´ero n
et de la colonne num´ero p. Cette matrice est triangulaire inf´erieure puisque pn. De plus
toute ligne de la matrice peut-ˆetre d´eduite de la ligne pr´ec´edente et des formules (F).
4. Donner les six premi`eres lignes du triangle de Pascal.
5. Donner un algorithme it´eratif pour calculer Cp
n.
6. Evaluer en fonction de nla complexit´e de l’algorithme en nombre d’additions pour le calcul
de Cp
n. Que peut-on dire de l’espace occup´e par cet algorithme ?
7. Cet algorithme peut-il ˆetre consid´er´e comme efficace ? Comparer avec l’algorithme r´ecursif.
Pouvait-on se douter du r´esultat ? Pourquoi ?
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !