Académique Documents
Professionnel Documents
Culture Documents
RECH_SEQ(e, T , n)
Données : l’élément e à rechercher, un tableau T de taille n
Résultat : le premier indice i tel que T [i] = e, ou −1 s’il est absent
i := 0 ;
while i < n et puis T [i] 6= e
i := i + 1
if i < n
return i
else
return −1
1.0
80
p
x3
60
x 0.8
0.6
40
0.4
20 log2 x 0.2 2x
0 0.0
0 2000 4000 6000 8000 10000 0 10 20 30 40 50
x
Exercice 4
On considère l’algorithme suivant :
(1) a := T[n]
(2) pour i = 1 à n-1 faire
(3) si T[i] > a faire
(4) traiter T[i]
(5) a := T[i]
1. Que calcule-t-il ? Expliciter les données, le résultat.
Il calcule le maximum d’un tableau. Les données sont T et n, le résultat est a.
2. Expliciter le modèle de coût. Quel est son coût minimal, son coût maximal ?
Considérons que l’appel à traiter est l’opération coûteuse et négligeons le reste.
Selon le résultat du test, le coût de l’instruction conditionnelle (3) est compris entre 0 et 1.
Par conséquent, le coût de la boucle (2) est compris entre 0 et n − 1 et on peut exhiber des cas
favorable et défavorable pour lesquels ces bornes sont atteintes.
Donc C min (n) = 0 et C max (n) = n − 1.
3. Peut-on espérer écrire un algorithme plus efficace pour résoudre le même problème ? Supposons
qu’un algorithme A effectue strictement moins de comparaisons, donc n-2 au maximum. Alors
quelles que soient les comparaisons effectuées, il existe deux sous-ensembles T1 et T2 de T tels
qu’aucun élément de T1 ne soit comparé avec un élément de T2 .
Si A choisit un élément de T1 comme maximum, on peut construire une donnée telle que A choisisse
le même élément mais que le maximum réel soit dans T2 .
Un tel algorithme A ne peut donc pas être correct.
A. Tri par insertion : une itération (i = 2 à n) à chaque pas de laquelle on insère à sa place l’élément
d’indice i dans la séquence triée formée des i − 1 premiers éléments.
Initialement : l’élément 1 forme une séquence triée.
Finalement : les n éléments sont triés.
On effectue l’insertion par une recherche séquentielle de l’emplacement k de l’élément i, et un décalage
vers la droite des éléments de k à i − 1. L’algorithme classique effectue ces deux opérations ensemble,
c’est-à-dire décale l’élément i vers la gauche (par un échange) jusqu’à ce qu’il atteigne sa “bonne” place.
B. Tri par sélection (du minimum) : une itération (i = 1 à n − 1) à chaque pas de laquelle on
trouve et met à sa place i l’élément correspondant.
Finalement : les n − 1 premiers éléments sont à leur place, donc le dernier est bien placé aussi.
On effectue la sélection par un parcours des éléments de i à n en sélectionnant le minimum, et en mémo-
risant son indice k, puis en effectuant l’échange entre les éléments i et k.