2012-06-08 14 views
27

Duplicar posible:
About python's built in sort() method¿Qué algoritmo usa python's sorted()?

nombre lo dice todo.

Estoy tratando de explicarle a alguien por qué deberían usar la función integrada ordenada de Python() en lugar de enrollar la suya propia, y me di cuenta de que no tenía idea de qué algoritmo usaba.

si importa, estamos hablando de Python 2.7

+4

http://stackoverflow.com/questions/1517347/about-pythons-built-in-sort-method pregunta ha sido contestada aquí. Utiliza Timsort – Aharpe

+0

Para otros que son curiosos, este artículo es genial: http://corte.si//posts/code/timsort/index.html –

Respuesta

63

Python utiliza un algoritmo llamado Timsort:

Timsort es un algoritmo de ordenación híbrido, derivado de la combinación de clasificación y ordenación por inserción , diseñado para llevar a cabo bien en muchos tipos de datos del mundo real . Fue inventado por Tim Peters en 2002 para su uso en el lenguaje de programación Python . El algoritmo encuentra subconjuntos de los datos que están ya ordenados, y usa los subconjuntos para ordenar los datos más de manera eficiente. Esto se hace fusionando un subconjunto identificado, llamado ejecución , con ejecuciones existentes hasta que se cumplan ciertos criterios. Timsort ha sido el algoritmo de clasificación estándar de Python desde la versión 2.3. Es ahora también se utiliza para ordenar matrices en Java SE 7, y en la plataforma Android .

+5

Es un algoritmo muy impresionante: el amigo del OP estaría muy presionado para Desarrollar algo mejor por su propia cuenta. –

+10

No solo usa un algoritmo extremadamente inteligente, sino que también lo implementa en C optimizado para mano. Incluso si lo implementó usted mismo al traducir el pseudocódigo a Python, sería un orden de magnitud más lento y más hambriento de memoria. – delnan

+1

Un documento interesante dice que se ha encontrado un error en TimSort (y proporciona una solución): http://envisage-project.eu/proving-android-java-and-python-sorting-algorithm-is-broken-and -how-to-fix-it/ – bgporter

4

El algoritmo de ordenamiento se llama Timsort. Ver timsort

Cuestiones relacionadas