2012-06-08 18 views
27

Eventuali duplicati:
About python's built in sort() methodQuale algoritmo utilizza python()()?

nome dice tutto.

Sto cercando di spiegare a qualcuno perché dovrebbero utilizzare la funzione di ordinamento() di Python integrata invece di eseguire il proprio, e ho capito che non ho idea di quale algoritmo utilizza.

Se è importante, stiamo parlando di pitone 2.7

+4

http://stackoverflow.com/questions/1517347/about-pythons-built-in-sort-method domanda è stato risposto qui. Usa Timsort – Aharpe

+0

Per gli altri che sono curiosi, questo articolo è fantastico: http://corte.si//posts/code/timsort/index.html –

risposta

63

Python utilizza un algoritmo chiamato Timsort:

timsort è un algoritmo di ordinamento ibrido, derivato dal merge sort e insertion sort, progettato per eseguire bene su molti tipi di dati reali . È stato inventato da Tim Peters nel 2002 per essere utilizzato nel linguaggio di programmazione Python . L'algoritmo trova sottoinsiemi dei dati che sono già ordinati e utilizza i sottoinsiemi per ordinare i dati in modo più efficiente . Questo viene fatto unendo un sottoinsieme identificato, chiamato esecuzione , con esecuzioni esistenti fino a quando alcuni criteri sono soddisfatti. Timsort è stato l'algoritmo di ordinamento standard di Python dalla versione 2.3. È ora utilizzato anche per ordinare gli array in Java SE 7 e sulla piattaforma Android .

+5

È un algoritmo molto impressionante: l'amico dell'OP sarebbe molto impegnato a sviluppare qualcosa di meglio da soli. –

+10

Non solo utilizza un algoritmo estremamente intelligente, è anche implementa in ottimizzato a mano C. Anche se è stato implementato da soli traducendo il pseudocodice in Python, sarebbe un ordine di grandezza più lento e più memoria-affamati. – delnan

+1

Un documento interessante dice che ha trovato un bug in TimSort (e fornisce una soluzione per questo): http://envisage-project.eu/proving-android-java-and-python-sorting-algorithm-is-broken-and -how-to-fix-it/ – bgporter

4

L'algoritmo di ordinamento si chiama Timsort. Vedi timsort

Problemi correlati