Académique Documents
Professionnel Documents
Culture Documents
2013-2014
fusion
3
fusion
fusion
3
fusion
fusion
1
1. La notation t[a,b[ signifie : le sous tableau de t dont les elements ont un indice i , a i < b
Exercice 1.
au td 6 :
def fusion ( t1 , t2 ):
t = creerTableau ( len ( t1 )+ len ( t2 ))
i1 = 0
i2 = 0
while i1 < len ( t1 ) and i2 < len ( t2 ):
if t1 [ i1 ] < t2 [ i2 ]:
t [ i1 + i2 ] = t1 [ i1 ]
i1 += 1
else :
t [ i1 + i2 ] = t2 [ i2 ]
i2 += 1
while ( i1 < len ( t1 )):
t [ i1 + i2 ] = t1 [ i1 ]
i1 +=1
while ( i2 < len ( t2 )):
t [ i1 + i2 ] = t2 [ i2 ]
i2 +=1
return t
En sinspirant de cet algorithme, ecrire une fonction fusionner(t,debut,milieu,fin) qui modifie t en fusionnant des copies des deux sous tableaux tries t[debut,milieu[ et t[milieu,fin[.
Exemples :
apres fusionner (t ,3 ,6 ,9) avec t = [4 , 5 , 7 , 1 , 4 , 6 , 3 , 5 , 7 , 100 , 15]
on a t =[4 , 5 , 7 , 1 , 3 , 4 , 5 , 6 , 7 , 100 , 15]
apres fusionner (t ,3 ,6 ,9) avec t = [4 , 5 , 7 , 1 , 4 , 8 , 3 , 5 , 7 , 100 , 15]
on a t =[4 , 5 , 7 , 1 , 3 , 4 , 5 , 7 , 8 , 100 , 15]
apres fusionner (t ,0 ,3 ,9) avec t =[1 , 5 , 7 , 1 , 4 , 8 , 9 , 12 , 100]
on a t = [1 , 1 , 4 , 5 , 7 , 8 , 9 , 12 , 100]
Exercice 2.
Ecrire
une fonction recursive triFusionRec(t,debut,fin) qui trie recursivement le tableau t entre les indices debut et fin-1.
Exercice 3.
Ecrire
une fonction triFusion(t) qui trie le tableau.
Travaux pratiques
Exercice 1. On desire maintenant utiliser pour la fusion un algorithme proche de celui etudie
pour inserer un tableau trie dans un tableau trie (voir td6). Reecrire les fonctions fusionnerBis,
triFusionRecBis et triFusionBis
Exercice 2.
Tris particuliers :