Quel algorithme la sort()
méthode intégrée en Python utilise-t-elle? Est-il possible de consulter le code de cette méthode?
python
algorithm
sorting
python-internals
Johannes
la source
la source
sort()
méthode, ou quel est le formatage de l'interpréteur, mais il doit y avoir quelque part, et je parie que c'est implémenté en C pour des problèmes de vitesse.Réponses:
Sûr! Le code est là , en commençant par la fonction
islt
et en continuant pendant un certain temps ;-). Comme le suggère le commentaire de Chris, c'est du code C. Vous voudrez également lire ce fichier texte pour une explication textuelle, les résultats, etc. etc.Si vous préférez lire du code Java plutôt que du code C, vous pouvez regarder l'implémentation de timsort par Joshua Bloch dans et pour Java (Joshua est également le gars qui a implémenté, en 1997, le mergesort modifié qui est toujours utilisé en Java, et on peut espérer que Java finalement passer à son récent port de timsort).
Une explication du port Java de timsort est ici , le diff est ici (avec des pointeurs vers tous les fichiers nécessaires), le fichier clé est ici - FWIW, alors que je suis un meilleur programmeur C que le programmeur Java, dans ce cas je trouve Le code Java de Joshua est globalement plus lisible que le code C de Tim ;-).
la source
list_ass_item()
. :)listsort.txt
ajoute quelques notes qui traitent des confusions courantes.Je voulais juste fournir un lien très utile que j'ai manqué dans la réponse par ailleurs complète d'Alex: Une explication de haut niveau du tri temporel de Python (avec des visualisations graphiques!).
(Oui, l'algorithme est essentiellement connu sous le nom de Timsort maintenant)
la source
Dans les premières versions de python, la fonction de tri implémentait une version modifiée de quicksort. Cependant, il a été jugé instable et à partir de 2.3, ils sont passés à l'utilisation d'un algorithme de tri de fusion adaptatif.
la source