¿Qué algoritmo está incorporado? sort()
método en Python usando? ¿Es posible echar un vistazo al código de ese método?
alex martelli
¡Seguro! el codigo aquícomenzando con la función islt
y procediendo durante BASTANTE tiempo ;-). Como sugiere el comentario de Chris, es código C. También querrás leer este archivo de texto para una explicación textual, resultados, etc etc.
Si prefiere leer código Java que código C, puede ver la implementación de timsort de Joshua Bloch 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 finalmente cambiará a su puerto reciente de timsort).
Alguna explicación del puerto Java de timsort es aquíla diferencia es aquí (con punteros a todos los archivos necesarios), el archivo clave es aquí — FWIW, aunque soy mejor programador de C que programador de Java, en este caso encuentro que el código Java de Joshua es más legible en general que el código C de Tim ;-).
-
@Chris, “Examinar fuentes de Python” es un atajo en todas las barras de marcadores de mis navegadores: apunta a svn.python.org/view/python/trunk ;-).
– Alex Martelli
4 oct 2009 a las 21:05
-
quiero saber cual es la funcion
list_ass_item()
hace. 🙂– Chris Lutz
4 oct 2009 a las 21:10
-
Realiza la asignación a un elemento de la lista (al igual que list_ass_slice realiza la asignación a una porción de la lista), nada que ver con la clasificación. Supongo que la abreviatura de “asignación” hace que el nombre sea gracioso…
– Alex Martelli
4 oct 2009 a las 23:22
-
la versión actual de
listsort.txt
agrega algunas notas que abordan confusiones comunes.– Tim Peters
18 de diciembre de 2013 a las 10:03
Silfverstrom
En las primeras versiones de Python, el sort
implementó una versión modificada de quicksort. Sin embargo, en 2.3 esto se reemplazó con un algoritmo mergesort adaptativo, para proporcionar un estable ordenar por defecto.
-
quicksort no se ‘considera inestable’; según las definiciones comúnmente utilizadas, quicksort es inestable, es decir, el orden original de dos objetos no se conserva, si son iguales durante esta clasificación. Tener un algoritmo de ordenación inestable significa que tiene que idear todo tipo de “magia” para ordenar los datos de manera sensata con múltiples criterios, en lugar de simplemente poder encadenar llamadas de ordenación, en timsort si desea ordenar por fecha de nacimiento y luego nombrar , simplemente ordena por nombre primero y luego por fecha de nacimiento No puede hacer eso con ordenación rápida
– Tony Suffolk 66
30 de julio de 2020 a las 6:19
-
@ TonySuffolk66 Creo que el autor de esta respuesta puede haber estado leyendo la documentación en ese momento y malinterpretó “estable” como una referencia a la calidad del software, en lugar de una propiedad de los algoritmos de clasificación. Edité la respuesta para que quede claro sobre el significado y agregué un enlace de referencia para ese concepto.
– Karl Knechtel
14 de enero a las 9:14
Por supuesto, es posible mirar el código del método: Python es un proyecto de código abierto. Sin embargo, es probable que el método esté implementado en C, por lo que tendrá que saber un poco sobre C para entenderlo.
– Chris Lutz
4 oct 2009 a las 20:50
¿Importa la versión?
– meder omuraliev
4 oct 2009 a las 20:50
@melder: No =) Solo quiero echar un vistazo a un algoritmo profesional 😛 @chris: ¿cómo?
– usuario89862
4 oct 2009 a las 20:51
Descargue el código fuente al intérprete de Python. no se donde implementan el
sort()
método, o cuál es el formato del intérprete, pero tiene que estar allí en alguna parte, y apuesto a que está implementado en C por cuestiones de velocidad.– Chris Lutz
4 oct 2009 a las 20:54
Aquí hay un ejemplo de cómo se usa
– Hari Ganesan
04/02/2014 a las 17:21