Efficace sorte fonctionnelle
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.)
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