précédent | suivant | table des matières
Le nombre de comparaisons effectuées lors de la descente ou lors de la remontée d’un élément dans un tableau ayant n éléments, est au maximum égal à la hauteur de l’arbre binaire représenté par l’arbre. Un arbre binaire complet de n éléments a une hauteur de log2(n)+1
La fonction organiserTas définie par :
void organiserTasBis( int t []){ for(int i = t.length/2; i>=1; --i) descendre(t, i); }
a une complexité linéaire. En effet :
Si n = 2m-1 la complexité est donc
Calculons la récurrence :
Posons , nous avons alors la récurrence :
Nous pouvons démontrer par récurrence que
Ou le montrer directement :
soit
Nous avons donc
La complexité de l’organisation du tas en arbre est donc inférieure à
void trierTas( int t []){ organiserTas( t ); for( int i = t.length-1; i>=1; --i ){ echanger(t[0], t[i-1]); descendre(t, 1, i-1); } }
2 éléments vont descendre au maximum de 1 place , 4 éléments vont descendre au maximum de 2 places, ... i éléments vont descendre au maximum de places. Supposons que m soit la première puissance de 2 supérieure ou égale à n.
On obtient la récurrence suivante :
Resolvons la récurrence
Soit
Donc
et
et donc