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
risposta
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 ;-).
+1 per sapere dove era. –
@Chris, "Sfoglia fonti Python" è una scorciatoia in tutte le barre dei segnalibri dei miei browser - punta a http://svn.python.org/view/python/trunk/ ;-). –
Voglio sapere qual è la funzione 'list_ass_item()'. :) –
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.
Volevo solo fornire un link molto utile che mi mancava nella risposta altrimenti completa di Alex: A high-level explanation of Python's timsort (con visualizzazioni di grafici!).
(Sì, l'algoritmo è fondamentalmente conosciuto come Timsort ora)
Il link sembra rotto. – kzorro
Ho risolto il collegamento. – twasbrillig
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. –
La versione è importante? –
@melder: No =) Voglio solo dare un'occhiata ad un algoritmo professionale: P @chris: come? – Johannes