En lisant divers algorithmes de tri, j'ai vu qu'il était mentionné que certains étaient "stables" et d'autres non. Qu'est-ce que cela signifie et quels compromis sont impliqués sur cette base lors de la sélection d'un algorithme?
En lisant divers algorithmes de tri, j'ai vu qu'il était mentionné que certains étaient "stables" et d'autres non. Qu'est-ce que cela signifie et quels compromis sont impliqués sur cette base lors de la sélection d'un algorithme?
Réponses:
Une sorte stable est une sorte qui préserve l'ordre d'origine du jeu d'entrées, où l'algorithme de comparaison ne fait pas la distinction entre deux ou plusieurs éléments.
Considérons un algorithme de tri qui trie les cartes par rang mais pas par couleur. La sorte stable garantira que l’ordre initial des cartes ayant le même rang est préservé; la sorte instable ne sera pas.
Les algorithmes stables préservent l'ordre relatif des éléments.
Ainsi, un algorithme de tri stable conservera l'ordre relatif des valeurs qui se comparent de manière égale.
Considérons un algorithme de tri dans lequel nous trions une collection de points 2D en fonction de leur dimension X.
Collection à trier: {(6, 3), (5, 5), (6, 1), (1, 3)}
Stable Trié: {(1, 3), (5, 5), (6, 3), (6, 1)}
Ordonné Trié: {(1, 3), (5, 5), (6, 3), (6, 1)}
ou{(1, 3), (5, 5), (6, 1), (6, 3)}
En ce qui concerne le compromis ... eh bien, le tri stable est moins efficace, mais parfois vous en avez besoin.
Par exemple, lorsqu'un utilisateur clique sur l'en-tête d'une colonne pour trier les valeurs dans une interface utilisateur, il est raisonnable de s'attendre à ce que son ordre de tri précédent soit utilisé dans le cas de valeurs égales.