LaDissertation.com - Dissertations, fiches de lectures, exemples du BAC
Recherche

TRI RAPIDE

Cours : TRI RAPIDE. Recherche parmi 298 000+ dissertations

Par   •  4 Octobre 2022  •  Cours  •  319 Mots (2 Pages)  •  197 Vues

Page 1 sur 2

1 TRI RAPIDE

0(n2) liste L de longueur n, liste L' de longueur n/2, on tire L' 4 fois plus vite que L.

Si je veux trier 2 listes de taille n/2, on va 2 fois plus vite qu'une liste de taille n

1. Tri rapide:

Def tire rapide(L):

if len(L) <= 1

return L

Linf, Lsup= [],[]

for i range (1, len(l):

if L[i]<=L[0]:

Linf.append(L[i])

else:

Lsup.append(L[i])

return trirapide(Linf) + trirapide(Lsup) + (L[0])

Complexité <=CSTE*n*nombre d'étage

meilleurs de cas: -Linf même taille que Lsup (a 1 près)-> moins d'étages

Or le moins d'etage est k car: 2k<=n<2k+1

Donc complexité: cste*n*k --> 0(nlog2(n))

Pire des cas: Linf ou Lsup est vide a chaque fois --> (n-1) étages

Donc complexité 0(n2)

Complexité moyenne:

0(nlog(n))

2 TRI FUSION:

On force le meilleur des cas :on coupe la liste en 2 sous-listes de longueur égales (à 1 près)

On commence par écrire ue fonction (L1,L2) qui fusonne 2 listes triées en 1 liste triées.

1. Def fusion (L1,L2):

i,j =0,0

L=[]

While i<len(L1) and j<len(L2)

If L1[i]<L2[j]

L.append(L1[i])

i=i+1

Else:

L.append(L2[j])

j=j+1

Return L+L1[i:]+L2[j:]

2. Def trifusion(L):

If len(L)<=1:

Return L

Else:

Return fusion( trifusion(L[:len(l)//2]), trifusion(L[len(l)//2:]) )

COMPLEXITE:

cout fusion: cste*(len(L1) + len(L2))= cste*len(L). À chaque étage

Or log2(n) étages-------->

...

Télécharger au format  txt (1.6 Kb)   pdf (37.3 Kb)   docx (7.9 Kb)  
Voir 1 page de plus »
Uniquement disponible sur LaDissertation.com