Structures de données et algorithmes
Un tas max, dans lequel la valeur de chaque parent est supérieure ou égale à celles de ses enfants, est stocké dans un tableau avec la racine en a[0]. On ajoute 45 au tas 50, 30, 40, 10, 20, 35 en le plaçant à la fin, puis en l'échangeant avec son parent tant qu'il est plus grand que celui-ci. Quel est le tableau obtenu ?
- A50, 30, 40, 10, 20, 35, 45
- B45, 30, 50, 10, 20, 35, 40
- C50, 30, 45, 10, 20, 35, 40
Afficher la réponse et l'explication
Réponse : C. 50, 30, 45, 10, 20, 35, 40
45 est placé en a[6], dont le parent est a[(6−1) ÷ 2] = a[2] = 40. Comme 45 > 40, ils sont échangés et 45 passe en a[2]. Son nouveau parent, a[0] = 50, est plus grand que 45, et le processus s'arrête, ce qui donne 50, 30, 45, 10, 20, 35, 40. Le nombre d'échanges est au plus égal à la hauteur de l'arbre : l'insertion se fait donc en O(log n), et le retrait du maximum aussi. C'est pourquoi les tas binaires servent couramment à implémenter les files de priorité.
Continuer : 9 autres questions sur Structures de données et algorithmes