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
>>> recherchew (L1,1)
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 indépendant 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 né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.
2 itérations nécessaire (3 au pire) pour 5 élé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 élé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 décrivant la dernière itération.
partant d’un 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é)