![](//s1.studylibfr.com/store/data-gzf/c0ac59d3317ca7b009f24524a9bb5558/1/003639591.htmlex.zip/bg3.jpg)
Lycée Victor Hugo MP-MP*-PC-PC*-PSI 2016-2017
II Majorité absolue
Nous allons nous intéresser à deux algorithmes dit
de "majorité absolue", i.e. qui détermine si dans une liste
Ldonnée, il existe un élément qui apparaît avec une fré-
quence strictement supérieure à 50%.
Ces algorithmes peuvent se révéler particulièrement
utiles lors du premier tour d’un scrutin majoritaire à deux
tours (comme par exemple l’élection présidentielle).
1 Premier algorithme
A Description
On crée une pile p.
Dans un premier temps, on lit la liste Len modifiant pselon les règles suivantes :
•Si pest vide ou si l’élément lu est déjà en haut de la pile p, on empile l’élément lu sur la
pile p.
•Sinon, on dépile un élément de p.
Si à la fin de cette étape, la pile pest non vide, l’élément potentiellement majoritaire est
l’élément xen haut de la pile p.
Pour le vérifier concrètement, il reste alors à re-parcourir la liste en comptant le nombre
d’occurrences de xau sein de la liste L.
B Commentaires
Nous admettrons (exercice !) que cet algorithme est correct, c’est à dire qu’il permet effecti-
vement de savoir s’il y a ou non un élément majoritaire et de le détecter le cas échéant.
Question 2 H
Lorsque la liste contient bien un élément majoritaire, quelle est la complexité temporelle de
l’algorithme ?
Question 3 H
À l’aide d’une feuille et d’un crayon ( !), appliquer l’algorithme sur les listes [A, A, C, B, B]
puis [A, A, B, C, B, B, B, C, A, B, B].
C À vous de jouer !
Script 4 H
Écrire une fonction nommée majoritaire qui se base sur l’algorithme ci-dessus.
Elle prendra comme argument une liste et renverra un couple de type (bool,elem) où :
-bool vaut True lorsque la liste a un élement majoritaire et False dans le cas contraire.
-elem vaut l’élément majoritaire lorsqu’il existe bien (et le premier élément de la liste sinon).
Ne pas oublier de tester votre fonction.
3