Algorithmique et Programmation
Exercice 1 (7 points) : l'UICN (Union Internationale pour la Conservation de la Nature) veut un logiciel pour
suivre la disparition des espèces sur la planète. Chaque espèce vivante est décrite par son nom, la zone où
elle vit et son nombre d'individus approximatif. Exemple d'espèce : nom = "Asteriscus smithii", zone = "Iles
du Cap-Vert", individus = 200.
a- Proposez des structures de données pour représenter les espèces vivantes. (1 point)
On suppose dans les questions qui suivent que la structure de données a été initialisée avec les
espèces.
b- Écrivez une fonction qui prend en entrée les espèces et une zone et renvoie le nombre d'espèces
de la zone qui ont moins de 100 individus. (2 points)
c- Écrivez une fonction qui prend en entrée un tableau des espèces et renvoie le nom de la zone qui
possède le plus d'espèces. On suppose que le tableau a au moins une case et qu'il est trié par ordre
croissant selon les nom des zones. (4 points)
Exercice 2 (4 points) :
b- Donnez le paramètre de complexité de la fonction mystère, indiquez quel est le cas au pire s'il
existe, et calculez la complexité de la fonction (dans le cas au pire s'il existe, dans le cas général sinon). Le
calcul de la complexité doit être justifié, sinon il ne sera pas pris en compte. (3 points)
On veut pouvoir trier des tableaux d'entiers par comptage. Le principe du tri par comptage est le
suivant : pour trier un tableau t, pour chaque entier i allant du plus petit au plus grand entier présent dans le
tableau t, on compte son nombre d'occurences n i, puis on remplit le tableau t avec pour chaque i, n i
éléments.
Exemple : soit le tableau t = [5,2,8,2,6,5,2]. On compte les différents entiers : il y a 0 un, 3 deux, 0
quatre, 2 cinq, 1 six, 0 sept, 1 huit et 0 entiers de valeur supérieure à 8. Donc le tableau trié sera
[2,2,2,5,5,6,8]
a- Écrivez une fonction qui, étant donné un tableau d'entiers, tous compris entre 0 et 100, le trie en
utilisant un tri par comptage. (5 points)
d- Donnez le paramètre de complexité de la fonction, indiquez quel est le cas au pire s'il existe, et
calculez la complexité de la fonction (dans le cas au pire s'il existe, dans le cas général sinon). Le calcul de
la complexité doit être justifié, sinon il ne sera pas pris en compte. (4 points)
Exercice 1
enregistrement Espèce
chaine nom, zone;
entier individus;
finenregistrement
fonction avec retour entier nbEspeces (Espèce t[l], entier l, chaine zone)
CO
entier i,n;
début
n <- 0;
pour (i allant de 0 à l-1 pas 1) faire
si (t[i].zone = zone ET t[i].individus<100) alors
n <- n+1;
finsi
finpour
RR
retourne n;
fin
EC
début
z <- t[0].zone;
n <- 1;
nMax <- -1;
pour (i allant de 1 à l-1 pas 1) faire
si (t[i].zone ≠ z) alors
si (n>nMax) alors
TI
zMax <- z;
nMax <- n;
finsi
z <- t[i].zone;
n <- 1;
O
sinon
n <- n+1;
finsi
finpour
N
si (n>nMax) alors
zMax <- z;
finsi
retourne zMax;
fin
Exercice 2
CO
finpour
finpour
j <- 0;
pour (i allant de 0 à 100 pas de 1) faire
tantque (occ[i] > 0) faire
t[j] <- i;
j <- j+1;
occ[i] <- occ[i]-1;
RR
fintantque
finpour
fin
Le paramètre de complexité de la fonction est la taille du tableau d'entrée, qu'on appelle n. Il n'y a pas de
cas au pire car le nombre de passages dans le si et le nombre de tours de la boulce tantque seront
globalement toujours égaux à n. La complexité est de la forme 101*n+101*n donc linéaire en la taille du
EC
tableau.
TI
O
N