¿Qué algoritmo sort()
utiliza el método integrado en Python? ¿Es posible echar un vistazo al código de ese método?
python
algorithm
sorting
python-internals
Johannes
fuente
fuente
sort()
método, o cuál es el formato para el intérprete, pero tiene que estar allí en alguna parte, y apuesto a que está implementado en C por cuestiones de velocidad.Respuestas:
¡Por supuesto! El código está aquí , comenzando con la función
islt
y continuando durante bastante tiempo ;-). Como sugiere el comentario de Chris, es código C. También querrá leer este archivo de texto para obtener una explicación textual, resultados, etc., etc.Si prefiere leer código Java que código C, puede mirar la implementación de Joshua Bloch de timsort en y para Java (Joshua también es el tipo que implementó, en 1997, el mergesort modificado que todavía se usa en Java, y uno puede esperar que Java lo haga eventualmente cambiar a su reciente puerto de timsort).
Alguna explicación del puerto Java de timsort está aquí , el diff está aquí (con punteros a todos los archivos necesarios), el archivo clave está aquí - FWIW, aunque soy un mejor programador en C que el programador de Java, en este caso encuentro El código Java de Joshua es más legible en general que el código C de Tim ;-).
fuente
list_ass_item()
. :)listsort.txt
agrega algunas notas que abordan las confusiones comunes.Solo quería proporcionar un enlace muy útil que me perdí en la respuesta, por lo demás completa, de Alex: una explicación de alto nivel de la ordenación de tiempos de Python (¡con visualizaciones de gráficos!).
(Sí, el algoritmo se conoce básicamente como Timsort ahora)
fuente
En las primeras versiones de Python, la función sort implementó una versión modificada de quicksort. Sin embargo, se consideró inestable y, a partir de la versión 2.3, cambiaron al uso de un algoritmo adaptable mergesort.
fuente