Structures de données et algorithmes
On trie par ordre croissant un tableau de 10 éléments avec le tri par insertion. Chaque élément à partir du deuxième est extrait et comparé aux éléments situés à sa gauche, en commençant par son voisin de gauche, jusqu'à trouver un élément inférieur ou égal ou jusqu'à atteindre le début. Combien de comparaisons sont effectuées quand le tableau est déjà dans l'ordre croissant, et quand il est dans l'ordre décroissant ?
- A45 dans les deux cas
- B10 et 100
- C9 et 45
Afficher la réponse et l'explication
Réponse : C. 9 et 45
Si le tableau est déjà croissant, chaque élément ne demande qu'une comparaison avec son voisin de gauche, soit 9 comparaisons au total pour les 9 éléments. S'il est décroissant, le i-ème élément extrait est comparé aux i éléments situés à sa gauche, soit 1 + 2 + … + 9 = 45. Le tri par insertion varie donc beaucoup selon l'entrée, O(n) dans le meilleur cas et O(n²) dans le pire, et il est très rapide sur des données presque triées. Le tri de Shell en tire parti en appliquant d'abord le tri par insertion à des éléments espacés d'un certain pas, et Timsort utilise aussi le tri par insertion pour les courtes séquences.
Continuer : 9 autres questions sur Structures de données et algorithmes