Question

Je suis une programmation fonction pour un TI-Nspire , donc je ne peux « t utiliser les commandes internes à l'intérieur d'une fonction. Quel est l'algorithme le plus généralement efficace pour le tri d'une liste des numéros sans modifier la liste elle-même? (Récursion et la liste de fractionnement sont un jeu équitable, de même que l'utilisation générale des mathématiques.)

Était-ce utile?

La solution

Mergesort est simple, simple, efficace et stable. Divisé la liste, trier récursive et fusionner les résultats

Pour être plus précis, mergesort prend O (N log N), qui est asymptotiquement optimale. En outre, dans la pratique (avec les deux algorithmes modifiés type court avec une sorte de sous-listes à usage spécial), mergesort peut être un concurrent proche du MODIFIÉ quicksort utilisé dans les C / C ++ bibliothèques standard.

Edit:. À la différence, mergesort nécessite en place sortes comme quicksort et trier l'insertion mémoire auxiliaire, et est plus simple à mettre en œuvre en copiant plutôt que la permutation

Autres conseils

Timsort est utilisé en Python et Java SE 7. Il prend le meilleur de tri fusion et le tri d'insertion. L'insertion est une sorte O (n ^ 2), mais avec de petites listes de chiffres, il est plus rapide que sorte de fusion!

Vous pouvez l'utiliser comme un algorithme de tri générique comme indiqué ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top