précédent | suivant | table des matières

Evaluation du tri en arbre

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 

haut de la page