2009-10-04 4 views
73

Quale algoritmo è il metodo integrato in sort() in Python? È possibile dare un'occhiata al codice per quel metodo?Informazioni sul metodo di ordinamento() di Python incorporato

+6

Naturalmente è possibile guardare il codice per il metodo - Python è un progetto open-source. Il metodo è probabilmente implementato in C, comunque, quindi dovrai sapere un po 'di C per avere un senso. –

+0

La versione è importante? –

+0

@melder: No =) Voglio solo dare un'occhiata ad un algoritmo professionale: P @chris: come? – Johannes

risposta

84

Sicuro! Il codice here, che inizia con la funzione islt e procede per un momento QUITE ;-). Come suggerisce il commento di Chris, è il codice C. Dovresti anche leggere il file di testo

Se preferisci leggere il codice Java rispetto al codice C, potresti vedere l'implementazione di timsort di Joshua Bloch in e per Java (anche Joshua il tizio che ha implementato, nel 1997, il mergesort modificato che è ancora usato in Java, e si può sperare che Java alla fine passerà alla sua recente porta di timsort).

Qualche spiegazione del porto Java di timsort è here, il diff è here (con puntatori a tutti i file necessari), il file di chiave è here - FWIW, mentre io sono un programmatore migliore C di programmatori Java, in In questo caso trovo il codice Java di Joshua più leggibile in generale rispetto al codice C di Tim ;-).

+3

+1 per sapere dove era. –

+4

@Chris, "Sfoglia fonti Python" è una scorciatoia in tutte le barre dei segnalibri dei miei browser - punta a http://svn.python.org/view/python/trunk/ ;-). –

+0

Voglio sapere qual è la funzione 'list_ass_item()'. :) –

7

Nelle prime versioni di Python, la funzione di ordinamento implementava una versione modificata di quicksort. Tuttavia, è stato ritenuto instabile e dalla 2.3 sono passati all'utilizzo di un algoritmo adaptive mergesort.