Académique Documents
Professionnel Documents
Culture Documents
DS11
Tris et recherches
Types construits et tables de données
Durée de l’épreuve : 01h50
Question 1
Programmer une fonction verifie qui prend en paramètre un tableau de valeurs numériques non vide et qui
renvoie True si ce tableau est trié dans l’ordre croissant, False sinon :
Question 2
Écrire une fonction indices_maxi qui prend en paramètre une liste non vide de nombres entiers et renvoie un
couple donnant d’une part le plus grand élément de cette liste et d’autre part la liste des indices de la liste où
apparaît ce plus grand élément :
Question 3
>>> assert max_dico({'Bob': 102, 'Ada': 201, 'Alice': 103, 'Tim': 50}) == ('Ada', 201)
>>> assert max_dico({'Alan': 222, 'Ada': 201, 'Eve': 220, 'Tim': 50}) == ('Alan', 222)
Question 4
La fonction tri_insertion suivante prend en argument une liste tab et trie cette liste en place en utilisant la
méthode du tri par insertion.
On rappelle le principe du tri par insertion : on considère les éléments à trier un par un, le premier élément
constituant, à lui tout seul, une liste triée de longueur 1. On range ensuite le second élément pour constituer
une liste triée de longueur 2, puis on range le troisième élément pour avoir une liste triée de longueur 3 et ainsi
de suite. . . A chaque étape, le premier élément de la sous-liste non triée est placé dans la sous-liste des éléments
déjà triés de sorte que cette sous-liste demeure triée.
Le principe du tri par insertion est donc d’insérer à la n-ième itération, le n-ième élément à la bonne place.
Page 1 sur 2
Lycéee Lyautey - 1ère spé NSI 6 DS11 Lundi 19 février 2023
1 def tri_insertion(tab):
2 n = len(tab)
3 for i in range(1, n):
4 valeur_insertion = tab[...]
5 # la variable j est utilisée pour déterminer où placer la valeur à insérer
6 j = ...
7 # tant qu'on a pas trouvé la place de l'élément à insérer
8 # on décale les valeurs du tableau vers la droite
9 while j > ... and valeur_insertion < tab[...]:
10 tab[j] = tab[j-1]
11 j = ...
12 tab[j] = ...
Question 5
Question 6
Programmer une fonction occurences qui renvoie un dictionnaire d’occurences des chiffres d’un entier naturel :
Question 7
Programmer une fonction recherche qui recherche dans une table de données les élèves qui ont une note
supérieur aux critères donnés en deuxième argument :
table = [{'Nom': 'Nagoumi', 'Prénom': 'Lim', 'Maths': 13, 'NSI': 15, 'HLP': 19}, \
{'Nom': 'Chagoumi', 'Prénom': 'Zaza', 'Maths': 17, 'NSI': 16, 'CAV': 14}, \
{'Nom': 'Ghazoumi', 'Prénom': 'Didi', 'PC': 19, 'NSI': 18, 'SVT': 17}]
>>> assert recherche(table, {'NSI': 15, 'Maths': 15}) == [{'Nom': 'Chagoumi', \
'Prénom': 'Zaza', 'Maths': 17, 'NSI': 16, 'CAV': 14}]
Exercice bonus (optionnel) Programmer un tri plus performant que le tri par insertion.
Page 2 sur 2