Dans cet article, nous explorerons le fonctionnement du tri par insertion en Python, son implémentation et ses performances.
Le tri par insertion est un algorithme de tri simple et efficace qui convient particulièrement aux petites listes ou aux listes déjà partiellement triées.
Le tri par insertion fonctionne en divisant la liste en deux parties : une partie triée et une partie non triée. L’algorithme sélectionne un élément de la partie non triée et l’insère à la bonne position dans la partie triée, déplaçant les éléments plus grands d’une position vers la droite.
Voici une implémentation simple du tri par insertion en Python :
def tri_insertion(arr):
for i in range(1, len(arr)):
cle = arr[i]
j = i - 1
while j >= 0 and cle < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = cle
# Exemple d'utilisation
ma_liste = [12, 11, 13, 5, 6]
tri_insertion(ma_liste)
print("Liste triée:", ma_liste) Le tri par insertion a une complexité temporelle moyenne de O(n^2), ce qui le rend moins efficace sur de grandes listes non triées. Cependant, il peut être plus rapide que d’autres algorithmes de tri sur de petites listes ou des listes partiellement triées.
Avantages et Inconvénients :
Avantages :
Inconvénients :
liste_non_triee = [5, 2, 9, 1, 5]
tri_insertion(liste_non_triee) liste_partiellement_triee = [1, 2, 3, 7, 5, 6, 4]
tri_insertion(liste_partiellement_triee) ma_liste = [3, 1, 4, 1, 5, 9, 2, 6, 5]
tri_insertion(ma_liste)
doublons = [ma_liste[i] for i in range(1, len(ma_liste)) if ma_liste[i] == ma_liste[i - 1]] # Utilisation dans un algorithme d'optimisation
def algorithme_optimisation(donnees):
tri_insertion(donnees)
# Autres étapes de l'algorithme # Exemple pédagogique
def demonstration_tri_insertion():
donnees = [4, 2, 7, 1, 9, 5]
tri_insertion(donnees)
print("Liste triée:", donnees)
demonstration_tri_insertion() Remarque : Bien que le tri par insertion convienne à ces scénarios, il est essentiel de choisir l’algorithme de tri en fonction des besoins spécifiques et des caractéristiques des données. Pour de grandes listes non triées, optez plutôt pour des algorithmes de tri plus rapides, tels que le tri rapide.
# Mauvaise initialisation
ma_liste = None
tri_insertion(ma_liste) # Cela générera une erreur
# Initialisation correcte
ma_liste_correcte = [3, 1, 4, 1, 5, 9, 2, 6, 5]
tri_insertion(ma_liste_correcte) # Fonctionnera correctement for i in range(1, len(liste)): # Correct : la boucle doit commencer à l'indice 1
for i in range(len(liste) - 1): # Incorrect : la boucle ne considère pas le dernier élément # Mauvaise gestion des éléments identiques
[4, 2, 7, 1, 9, 5, 1, 6, 5] # Le tri peut produire [1, 1, 2, 4, 5, 5, 6, 7, 9]
# Gestion correcte
[4, 2, 7, 1, 9, 5, 1, 6, 5]
# Après le tri, les éléments identiques restent dans l'ordre d'origine [1, 1, 2, 4, 5, 5, 6, 7, 9] # Mauvaise utilisation des variables temporaires
while j >= 0 and element_courant > liste[j]: # La comparaison est incorrecte
# Utilisation correcte
while j >= 0 and element_courant < liste[j]: # Comparaison correcte def tri_insertion(liste):
# Logique de tri
return liste # Oublier cette étape peut conduire à une liste non triée # Test sur une liste déjà triée
ma_liste_triee = [1, 2, 3, 4, 5]
tri_insertion(ma_liste_triee) # Assurez-vous que la liste reste inchangée En évitant ces erreurs courantes, vous pouvez garantir une implémentation correcte et fiable de l’algorithme de tri par insertion en Python.
Conclusion :
Le tri par insertion en Python est un choix judicieux pour trier de petites listes ou des listes déjà partiellement triées. Son implémentation simple en fait un excellent choix pour des situations où la simplicité prime sur la vitesse. Cependant, pour des listes plus importantes, d’autres algorithmes de tri plus efficaces peuvent être préférables.
Lire aussi : Tris par Insertion en Python : Exercices Corrigés
Si vous voulez connaître votre signe chinois sans passer par des tableaux interminables, vous êtes…
Quand on finance une voiture, tout le monde voit à peu près de quoi il…
On connaît tous ce moment : on tombe sur une offre de leasing “à partir…
Dans l’industrie, parler de maintenance sans préciser le niveau d’intervention revient souvent à créer de…
La Maintenance 1er Niveau - maintenance de niveau 1 - représente la première barrière contre…
Un outil simple pour mesurer la compréhension… et révéler les écarts invisibles Dans beaucoup d’organisations,…
This website uses cookies.