Informatique Cours 4.1 Tri par insertion
Lycée Jules Ferry Cannes Page 2 sur 4 TSI2
1.2 Complexité dans une liste triée
Algorithme Recherche dichotomique[2]
Entrées : élément x et liste L
Sortie : s=Vrai si x est dans L et Faux sinon
n Nombre d'éléments de L
g 0
d n-1
Tant que g d Faire
k (g+d) div 2
Si L[k]<x Alors
g k+1
Sinon :
Si L[k]>x Alors
d k
Sinon :
d k
g k
Fin Si
Fin Tant que
Si L[g]=x Alors
s True
Sinon
s False
Fin Si
Renvoyer s
Fin de Recherche dichotomique
def Recherche_dichotomique (L,x):
# Entrée : liste L, x élément cherché
# Sortie : s=True si x dans L et False sinon
n=len(L)
g=0 # premier indice de L : 0
d=n-1 # dernier indice de L : n-1
while g!=d:
k=(g+d)//2 # dichotomie
if L[k]<x: # x est à droite du milieu
g=k+1
else:
if L[k]>x: # x est à gauche du milieu
d=k
else: # x est au milieu
g=k
d=k
if L[g]==x: # Affectation de la sortie
s=True
else:
s=False
return s
Appel de la fonction Recherche_dichotomique :
>>> liste_triee=[0,1,2]
>>> Recherche_dichotomique(liste_triee,2)
True
Complexité : Dans le pire des cas, l'élément n'est pas présent dans la liste. Si m est le nombre d'éléments
restants après k itérations :
jusqu'à m=1. Complexité
itérations.
Pour un algorithme de recherche dichotomique, on a une
complexité logarithmique
(comptée en nombre d'itérations).
1.3 Conclusion
Pour le traitement de grandes quantités de données (base de donnée internet, relevés à haute fréquence,
résultats de calculs par éléments finis…), l'algorithme a un impact important sur les durées de traitement.
Exemple pour
pages trouvées, un moteur de recherche internet met 0,5 s.
Pour une durée unitaire d'opération de 10ns si n=
données :
- Un algorithme linéaire conduit à une durée de traitement de 10s.
- Un algorithme logarithmique
conduit à une durée de traitement de 300ns
Pour afficher rapidement des données nombreuses, il est donc indispensable de trier les données avant les
requêtes.
2 Tris
2.1 Principe du tri
On se donne un tableau t, dont les éléments t[0]; t[1]; t[2]; …; t[n - 1] sont comparables.
Les t[i] peuvent être : des entiers, des flottants, des lettres de l’alphabet…
Un tableau t est trié par ordre croissant si : t[0] t[1] … t[n-1]:
Exemple : si t = ['C','A','T','A, 'Z','U','M'], on veut transformer t en t0 = ['A','A', 'C','M','T','U', 'Z']