2009-10-19 9 views
0

Quelqu'un peut-il me recommander un algorithme de tri pour ma liste de liens personnalisée + exemple, fondamentalement il est similaire au Generic LinkedList donc si vous pourriez donner des exemples pour le LinkedList générique ce sera génial .Quel est le meilleur algorithme de tri de test pour un LinkedList doublement

Je prévois d'implémenter le tri de fusion, s'il vous plaît des conseils sur les avantages/inconvénients car je ne suis pas si familier avec un algorithme, juste pris l'idée de l'algorithme de tri de fusion de google.

C# que des exemples si possible :)

Vive

Répondre

1

Cela ressemble beaucoup à ses devoirs. Wikipedia a un bon pseudo-code pour commencer.

En ce qui concerne l'algorithme qui est le meilleur, cela dépend des contraintes de mémoire, de la puissance de traitement, de la taille de l'échantillon, du type de données et bien plus encore. Il n'y a pas de "meilleur" algorithme (Bien qu'il y ait des pires algorithmes.)

4

Mergesort est une bonne idée, car, contrairement aux autres sortes avancées, elle ne nécessite pas d'indexabilité (donc ça marche bien sur les listes chaînées aussi comme tableaux). Une introduction générale en C# est here - il n'utilise pas de génériques, et introduit inutilement des listes et des indexations où les choses pourraient parfaitement se dérouler par itération, mais je ne trouve pas d'intro élémentaire en C# bien fait. Un inconvénient dans tous les algorithmes de tri avancé est qu'il est souvent préférable, en récursion, de ne pas utiliser l'algorithme "algo avancé", mais de passer à des algorithmes plus simples pour les sous-listes suffisamment petites - les algorithmes simples ont pire big-O, mais de plus petites constantes multiplicatives, de sorte que le mélange peut souvent être optimal.

Une variante intéressante est natural mergesort, qui tire parti des exécutions qui peuvent déjà être présentes dans les données - l'URL que j'ai donné utilise pseudocode, mais il est très lisible. Mergesort naturel est idéal pour les données qui sont déjà triées, mais avec quelques éléments en panne, par ex. ajouté à la fin - il peut offrir des performances O (N) asymptotiques lorsque les quelques éléments sont en effet peu nombreux ;-).

Questions connexes