il y a 2 mois
Tir par Insertion : Approche en Première NSI
Dernière mise à jour : il y a 1 mois
Tir par Insertion : Approche en Première NSI
Introduction
Le tri par insertion est une méthode algorithmique intuitive utilisée pour organiser des séquences de données dans un ordre précis. Contrairement à des méthodes plus complexes, il se base sur un concept simple : insérer chaque élément à sa place exacte dans une sous-liste déjà triée. Cette technique s’apparente au tri des cartes en main d’un joueur, où chaque nouvelle carte est insérée à sa place pour maintenir l’ordre. Cet article explore en détail le fonctionnement du tri par insertion, les situations où il excelle, et son efficacité en termes de complexité temporelle, offrant ainsi une compréhension de base essentielle aux étudiants en informatique et aux développeurs débutants.Fonctionnement de l'algorithme
Le tri par insertion fonctionne en parcourant les éléments de la liste à trier et en les plaçant dans la bonne position. Voici les étapes essentielles du processus :
- Initialisation : Considérer le premier élément de la liste comme étant déjà trié.
- Comparaison : Pour chaque élément suivant, le comparer avec les éléments de la portion triée de la liste pour déterminer sa place exacte.
- Déplacement : Si l’élément courant est plus petit que les éléments déjà triés, décaler ces éléments vers la droite pour créer l’espace nécessaire.
- Insertion : Insérer l’élément dans la position adéquate et poursuivre avec le prochain élément non trié.
Étape | Description |
---|---|
Initialisation | Considérer le premier élément comme trié. |
Comparaison | Comparer l'élément suivant avec ceux de la partie triée. |
Déplacement | Décaler les éléments plus grands pour libérer de l'espace pour l'élément courant. |
Insertion | Insérer l'élément à sa position correcte. |
Algorithme de Tri par Insertion
def tri_par_insertion(liste):
for i in range(1, len(liste)):
cle = liste[i]
j = i - 1
while j >= 0 and cle < liste[j]:
liste[j + 1] = liste[j]
j -= 1
liste[j + 1] = cle
return liste
# Exemple d'utilisation
liste_non_triee = [12, 11, 13, 5, 6]
liste_triee = tri_par_insertion(liste_non_triee)
print("Liste triée :", liste_triee)
Voici le code avec les tirets remplacés par les balises HTML appropriées :
Complexité et efficacité
Le tri par insertion présente des performances variables en fonction de la disposition initiale des données dans la liste :- Meilleur cas : Si la liste est déjà triée ou presque, le tri par insertion atteint une complexité temporelle de O(n). Dans ce cas, chaque insertion nécessite au plus une seule comparaison, car chaque élément est proche de sa position correcte.
- Cas moyen et pire cas : Dans les situations où les éléments sont placés de manière aléatoire ou en ordre inverse, la complexité devient O(n²). Cela s'explique par le fait que chaque insertion peut nécessiter de décaler presque tous les éléments déjà triés pour libérer l’espace nécessaire.
- Petites listes : Pour des listes de petite taille, l'algorithme est simple à implémenter et rapide à exécuter.
- Listes partiellement triées : L'algorithme est performant lorsqu'il s'agit de trier des listes où la plupart des éléments sont déjà ordonnés.