Plusieurs algorithmes de tri courants et leurs avantages et inconvénients

Les algorithmes de tri courants sont :

  1. Tri à bulles : parcourez à plusieurs reprises la séquence à trier, comparez les tailles des éléments adjacents et échangez-les jusqu'à ce que le tri de la séquence soit terminé. La complexité temporelle est O(n^2), qui est un algorithme de tri stable.

  2. Tri par sélection : chaque parcours trouve le plus petit élément et le place à la fin de la séquence triée. La complexité temporelle est O(n^2), ce qui n'est pas un algorithme de tri stable.

  3. Tri par insertion (Insertion Sort) : parcourt la séquence à trier et insère l'élément courant à la position appropriée dans la séquence triée. La complexité temporelle est O(n^2), qui est un algorithme de tri stable.

  4. Shell Sort : Une version améliorée du tri par insertion, qui divise la séquence en plusieurs sous-séquences pour le tri par insertion, et effectue enfin un autre tri par insertion. La complexité temporelle est O(n log n) à O(n^2), ce qui n'est pas un algorithme de tri stable.

  5. Fusionner le tri : divisez la séquence en plusieurs sous-séquences et triez-les de manière récursive, puis fusionnez les sous-séquences triées dans la séquence ordonnée finale. La complexité temporelle est O(n log n), qui est un algorithme de tri stable.

  6. Tri rapide : sélectionnez un élément de référence, placez les éléments plus petits que l'élément de référence à gauche, placez les éléments plus grands que l'élément de référence à droite, puis triez de manière récursive les parties gauche et droite. La complexité temporelle est O(n log n), ce qui n'est pas un algorithme de tri stable.

  7. Tri par tas : créez la séquence à trier dans un grand tas racine ou un petit tas racine, échangez l'élément supérieur avec le dernier élément à chaque fois, puis reconstruisez le tas. La complexité temporelle est O(n log n), ce qui n'est pas un algorithme de tri stable.

Les avantages et les inconvénients sont les suivants

nom de l'algorithme avantage défaut
Tri à bulles 1. Mise en œuvre simple, facile à comprendre et à coder 2. Le tri à bulles est un bon choix pour trier de petits ensembles de données 1. Complexité temporelle élevée, O(n^2). 2. L'efficacité du tri d'une grande quantité de données est faible 3. Lorsque le tableau est complètement ordonné, il doit encore être complètement trié.
tri par sélection 1. L'idée de l'algorithme est simple et facile à mettre en œuvre 2. Il n'occupe pas d'espace mémoire supplémentaire 1. Complexité temporelle élevée, O(n^2). 2. Le temps d'exécution n'a rien à voir avec l'état initial des données d'entrée, c'est-à-dire que, que les données soient ordonnées ou désordonnées, le même nombre d'opérations de comparaison et de mouvement est requis ; 3. Parmi tous N ^ 2, le nombre d'échanges est le plus faible, donc sélectionnez le tri Il a un léger avantage sur le tri à bulles en termes de mouvement de données. Mais lorsque le déplacement des données prend du temps, d'autres algorithmes doivent être pris en compte.
tri par insertion 1. Mise en œuvre simple, facile à comprendre et à coder ; 2. Pour le tri de données à petite échelle, le tri par insertion est plus efficace ; 3. Pour le tri de tableaux partiellement ordonnés, l'efficacité est plus élevée 1. Pour trier des tableaux désordonnés à grande échelle, l'efficacité du tri par insertion est faible et la complexité temporelle est O(n^2). 2. Le tri par insertion est un tri stable, mais chaque échange nécessite des opérations d'affectation 3. Par rapport au tri par sélection, le nombre d'échanges est supérieur, de sorte que l'efficacité est inférieure au tri par sélection.
Tri de colline 1. Un algorithme amélioré basé sur le tri par insertion, qui peut trier rapidement des séquences fondamentalement ordonnées ; 2. C'est un algorithme de tri sur place qui ne nécessite pas d'espace de stockage supplémentaire ; 3. La limite supérieure de la complexité temporelle est O( n^ 2), mais le temps de fonctionnement réel est plus court. 1. La complexité temporelle dépend de la sélection de la séquence incrémentielle, et la sélection de la séquence incrémentielle n'est pas très facile. 2. C'est un algorithme de tri instable, qui ne garantit pas que l'ordre relatif des éléments égaux reste inchangé.
tri par fusion 1. C'est un algorithme de tri stable, qui garantit que l'ordre relatif d'éléments égaux reste inchangé ; 2. La complexité temporelle est stable, O(nlogn) ; 3. Il convient au tri d'une grande quantité de données. 1. Un espace de stockage supplémentaire est requis pour stocker les baies temporaires. 2. Des appels récursifs sont nécessaires, qui consomment une certaine quantité d'espace de pile système 3. Lorsque le tableau est complètement ordonné, il doit encore être complètement trié.
tri rapide 1. La complexité spatiale est faible, et une seule pile est nécessaire pour réaliser le processus récursif ; 2. La complexité temporelle est meilleure, O(nlogn) dans le meilleur des cas, O(nlogn) dans le cas moyen, et O(nlogn ) dans le pire des cas n^2) ; 3. L'effet de tri est meilleur pour les données distribuées de manière aléatoire, mais l'effet de tri pour les données comportant un grand nombre d'éléments identiques est médiocre. 1. Instable, car la position des éléments changera pendant le processus de tri. 2. Dans le pire des cas, la complexité temporelle est O(n^2). Lorsque les données ont été triées, l'efficacité du tri rapide sera fortement réduite ; 3. L'effet de tri est meilleur pour les données distribuées aléatoirement, mais pour un grand nombre d'éléments identiques. L'ordre des données des éléments est moins efficace.
tri en tas 1. Stable, car la position des éléments ne changera pas pendant le processus de tri ; 2. La complexité temporelle est stable et la complexité temporelle dans les meilleurs, moyens et pires cas est O(nlogn) ; 3. Pour une distribution aléatoire Et un grand nombre de données avec les mêmes éléments ont un meilleur effet de tri 1. La complexité de l'espace est élevée et un arbre binaire complet doit être établi pour stocker les données, il doit donc occuper une grande quantité d'espace mémoire. 2. Il ne convient pas au tri de données à grande échelle, car dans le cas d'une grande quantité de données, le tri par tas nécessite plusieurs échanges de données et l'efficacité est faible.

Je suppose que tu aimes

Origine blog.csdn.net/qq_42133976/article/details/130417604
conseillé
Classement