Tteet
Jean-Michel Dischler et Fr´d´ric Vivien e e Recherche du maximum
1. Concevez un algorithme de recherche du maximum dans un ensemble ` n ´l´ments (vous disposez en a ee tout et pour tout d’une fonction de comparaison). Maximum(A) max ← A[1] pour i ← 2 ` n faire a si max ¡ A[i] alors max ← A[i] renvoyer max 2. Quelle est la complexit´ de votre algorithme en nombre de comparaisons ? e R´ponse : n − 1. e 3. Montrez qu’il est optimal. Tout ´l´ment hormis le maximum doit avoir perdu une comparaison, sinon, on ne peut pas savoir qu’il ee n’est pas le maximum. Il y a n − 1 tels ´l´ments. Tout algorithme de recherche du maximum doit donc ee faire au moins n − 1 comparaisons.
Recherche du deuxi`me plus grand ´l´ment e ee
Nous supposerons ici que l’ensemble consid´r´ ne contient pas deux fois la mˆme valeur. ee e 1. Proposez un algorithme simple de recherche du deuxi`me plus grand ´l´ment. e ee ` Deuxieme-Plus-Grand(A) rang max ← 1 pour i ← 2 ` n faire si A[rang max] ¡ A[i] alors rang max ← i a si rang max = 1 alors rang second ← 1 sinon rang second ← 2 pour i ← 2 ` n faire si i = rang max et A[rang second] ¡ A[i] alors rang second ← i a renvoyer A[rang second] 2. Quel est sa complexit´ en nombre de comparaisons ? e La recherche du maximum coˆte n − 1 comparaisons. La boucle qui recherche le deuxi`me plus grand u e ´l´ment une fois que le maximum a ´t´ trouv´ effectue n − 2 comparaisons. D’o` un coˆt total de 2n − 3 ee ee e u u comparaisons. 3. R´crivez votre algorithme de recherche du maximum sous la forme d’un tournoi (de tennis, de foot, e de p´tanque ou de tout autre sport). Il n’est pas n´cessaire de formaliser l’algorithme ici, une figure e e explicative sera amplement suffisante. Les comparaisons sont organis´es comme dans un tournoi : e – Dans une premi`re phase, les valeurs sont compar´es par paires. Dans chaque paire, il y a bien sˆr e e u un plus grand ´l´ment (le « vainqueur ») et un plus petit