Informatique TD/ TP 4.1 Tri par insertion
Lycée Jules Ferry Cannes Page 1 sur 3 TSI1
1 Algorithme de recherche dans une liste
1) Compléter l'évolution des variables dans les tableaux suivants pour l'appel des fonctions avec les
entrées L1 et 1. Inscrire aussi en dessus des tableaux l'instruction correspondant à la fonction ainsi
que la valeur retournée en console.
>>> recherchef (L1,1)
True
itération
init
1
2
3
4
5
v
2
3
1
s
False
False
False
True
>>> recherchew (L1,1)
True
itération
init
1
2
3
4
5
n
5
5
5
5
c
0
0
1
2
T[c]
2
3
1
s
False
False
False
True
2) Comparer les 2 algorithmes en terme de complexité temporelle et en mémoire.
C(n) = n boucles dans le pire des cas et C(n)=1 boucle dans le meilleur des cas (pour les 2 algorithmes).
recherchew nécessite une variable en plus, ce qui n'est pas significatif car cela est inpendant de n.
3) Proposer une instruction avec la fonction dichotomie et une liste contenant les entiers 0 à 4 qui
renvoie True si 1 est dans la liste. Combien d'itérations sont cessaires pour obtenir ce résultat.
L2=[0,1,2,3,4] # liste triée obligatoire pour l'algorithme de dichotomie
print('dichotomie avec', L1, 'renvoie :', dichotomie (L2,1)).
Evolution des variables : les valeurs sont dans l'ordre de modification dans la boucle.
itération
init
1
2
3
4
5
T[k]
T[1] :1
g
0
0
1
d
4
2
1
k
4//2=2
2//2=1
1//2=0
2 itérations nécessaire (3 au pire) pour 5 éments
4) Comparer cet algorithme en terme de complexité temporelle et en mémoire avec les 2 premiers
algorithmes.
C(n) = k itérations tel que
= 1 (k divisions par 2 sont nécessaires pour aboutir à 1 seul ément) soit
=  = 2. log
dans le pire des cas (1 absent de la liste ou situé à l'indexe 0 de L2).
2 Tri par insertion
5) Compléter la description suivante en crivant la dernière itération.
partant dun tableau t de taille n 2 :
on insère t[1] dans le sous-tableau t[0 : 1] = [t[0]]
on insère t[2] dans le sous-tableau t[0 : 2] = [t[0], t[1]] (qui est trié)
on insère t[n-1] dans le sous-tableau t[0 : n-1] = [t[0], t[1]…t[n-2]] (qui est trié)
Informatique TD/ TP 4.1 Tri par insertion
Lycée Jules Ferry Cannes Page 2 sur 3 TSI2
6) Compléter le tableau suivant qui décrit l'évolution du tri par l'algorithme Tri_insertion.
Sur le tableau t = [5; 2; 3; 1; 4], l’algorithme est :
t=[
5
,2,3,1,4]
On insère t[1] = 2 dans t[0 : 1]
t=[
2,5
,3,1,4]
On insère t[2] = 3 dans t[0 : 2]
t=[
2,5
,3
,1,4]
On insère t[
3
] =
1
dans t[0 :
3
]
t=[
2,5
,3,1
,4]
On insère t[
4
] =
4
dans t[0 :
4
]
t=[
2,5
,3,1,4]
A chaque étape, l’insertion de t[i ] provoque la modification du sous-tableau t[0 : i ] : on décale certains
éléments pour placer t[i ].
On fait descalages vers la droite tant que l’ément t[j ] rencontré est supérieur à la valeur que lon
veut insérer.
7) Compléter le tableau suivant décrivant l'effet de l'algorithme. Préciser la séquence de l'algorithme
qui produit les décalages vers la droite.
Soit t = [7; 10; 21; 31; 45; 11; 8; 1] (de longueur n = 8).
Pour insérer la valeur t[5] = 11 dans t[0 : 5] = [7; 10; 21; 31; 45].
On stocke la valeur 11 ailleurs
t = [7; 10
; 21; 31; 45;
11
; 8; 1]
On décale la valeur 45 à droite
t = [7; 10
; 21; 31; 45;
4
5
; 8; 1]
On décale la valeur
3
1
à droite
t = [7; 10
; 21; 31;
3
1
;
4
5
;
8; 1]
On décale la valeur
2
1
.
à droite
t = [7; 10
; 21;
2
1
;
3
1
;
4
5
;
8; 1]
On place la valeur
1
1
t = [7; 10
;
1
1
;
2
1;
3
1
;
4
5
;
8; 1]
8) La liste initiale est-elle triée après l'exécution de la fonction ? Justifier votreponse.
Oui la liste initiale est triée en fin de fonction car il s'agit d'un alias dans la fonction.
Si on souhaite que la liste passée en entrée ne soit pas modife par la fonction, il faut refaire une
affectation de la liste passée en entrée en début de fonction de tri :
T = T[0:len(T)-1]
T n'est plus alors un alias de la liste passée en entrée mais une liste contenant les valeurs de la liste
passée en entrée.
9) Ecrire les instructions faisant appel à la bibliothèque numpy et qui permettent de récupérer les
valeurs du fichier four.txt sous forme d'un tableau four.
mes1 = genfromtxt ( 'four.txt', delimiter='\t')
10) Ecrire une fonction rapidite qui admet les mesures mes en entrées et qui renvoie en sortie le
temps deponse à 5%. Pour cela, on scrutera la valeur de la grandeur four à partir du dernier
instant de mesure jusqu'à ce que la grandeur s atteigne 95% de sa valeur finale ou 105% de sa
valeur finale.
Informatique TD/ TP 4.1 Tri par insertion
Lycée Jules Ferry Cannes Page 3 sur 3 TSI2
11) Ecrire une fonction ecart qui détermine l'écart maximum entre 2 mesures successives de la
grandeur physique four.
12) Ecrire une fonction valeurs qui admet les mesures et une valeur x en entrées. Cette fonction
renvoie les instants l'écart entre x et les valeurs de températures sont inrieures à l'écart
maximum e consta entre 2 temratures successives (l'écart e est obtenu par la fonction
portant ce nom; l'algorithme de recherche est l'algorithme while avec la comparaison abs(x-
T[c])<e pour signifier l'égalité des flottantsT est la liste des températures).
1 / 3 100%