¿Qué algoritmo sort()
utiliza el método integrado en Python? ¿Es posible echar un vistazo al código de ese método?
fuente
¿Qué algoritmo sort()
utiliza el método integrado en Python? ¿Es posible echar un vistazo al código de ese método?
¡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 ;-).
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)
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.
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.