Ressources mathématiques > Base de données d'exercices > Exercices de théorie des graphes et d'algorithmique >
Exercices corrigés - Algorithmique : ltableaux, listes, files
Tableaux
Enoncé 

- On considère la fonction Python suivante :
Quel résultat obtient-on en exécutant $\verb+f([8,1,3,7,2,3,6,8,19,4,2,0,1,2,1,10])+$ ?def f(tab): m=tab[0] a=0 n=len(tab) for i in range(1,n): if (tab[i]<m): m=tab[i] a=i return a - Si $t$ est un tableau d'entiers de longueur $n\geq 3$, on dit que $i$ est la position d'un minimum local de $t$ si $1\leq i\leq n-2,$ $t[i]\leq t[i-1]$ et $t[i]\leq t[i+1]$. Écrire une fonction Python qui prend en entrée un tableau d'entiers et retourne la liste des positions de ces minimums locaux. On supposera que le tableau est de longueur au moins égal à $3$.
Listes
Exercice 2 - Insertion dans une liste triée ♡ [Signaler une erreur] [Ajouter à ma feuille d'exos] [Copier le lien]
Enoncé 

Écrire une fonction qui prend en argument une liste triée $l$ et un entier $elt$ et qui renvoie la liste triée obtenue par insertion à sa place de $elt$ dans $l$. On fera attention à ce que la liste $l$ peut être vide.
Exercice 3 - Recherche du premier élément d'une liste ♡ [Signaler une erreur] [Ajouter à ma feuille d'exos] [Copier le lien]
Enoncé 

Écrire une fonction prenant en argument une liste Liste et une variable x, et qui retourne le plus petit indice k de la liste tel que Liste[k] soit égal à x. Si la liste ne contient pas x, alors la fonction doit retourner -1.
Exercice 4 - Fusion de deux listes ♡ [Signaler une erreur] [Ajouter à ma feuille d'exos] [Copier le lien]
Enoncé 

Écrire une fonction fusion qui prend en argument deux listes triées $L1$ et $L2$ et qui renvoie une seule liste triée contenant les éléments de $L1$ et $L2$.
Exercice 5 - Nombre d'occurences ♡ [Signaler une erreur] [Ajouter à ma feuille d'exos] [Copier le lien]
Enoncé 

- Écrire une fonction Python $maxi(L)$ prenant en argument une liste d'entiers naturels $L$ et renvoyant le maximum des entiers de cette liste (on n'utilisera pas de fonction spécifique de Python déterminant ce maximum). Quelle est le nombre d'opérations élémentaires effectué par cette fonction en fonction de la longueur $n$ de la liste?
- Écrire une fonction Python $nboc(L)$ prenant en argument une liste d'entiers naturels $L$ et retournant une liste $T$ de longueur $M=maxi(L)+1$ où, pour tout $i\in\{0,\dots,M\}$, $T[i]$ est le nombre d'occurences de $i$ dans la liste $L$.
- Quel est, en fonction de $n$ et $M$, le nombre d'opérations élémentaires effectué par votre fonction $nboc(L)$?
- On veut que ce nombre ne dépende pas de $L$. Modifier votre fonction si ce n'est pas le cas.
Exercice 6 - Recherche par dichotomie dans une liste triée ♡ [Signaler une erreur] [Ajouter à ma feuille d'exos] [Copier le lien]
Enoncé 

On propose l'algorithme suivant :
def rech_dicho(L,g,d,x):
"""L est une liste telle que L[g:d+1] est triee"""
if x>L(d):
return d+1
else:
a=g
b=d
while a!=b:
c=(a+b)//2
if x<=L[c]:
b=c
else:
a=c+1
return a
- On prend $L=[2,4,5,7,7,8,10]$. Que renvoient les instructions suivantes?
- rech_dicho(L,1,5,6)
- rech_dicho(L,0,5,1)
- Que fait la fonction rech_dicho?
- Quelle est la complexité de cette fonction, mesurée en nombre de comparaisons. On pourra exprimer cette complexité en fonction d'un ou plusieurs paramètres parmi $\textrm{len}(L),g,d,x$.








