Jakiego algorytmu sort()
używa metoda wbudowana w Pythonie? Czy można rzucić okiem na kod tej metody?
python
algorithm
sorting
python-internals
Johannes
źródło
źródło
sort()
metodę ani jakie jest formatowanie dla interpretera, ale musi gdzieś tam być i założę się, że jest zaimplementowany w C ze względu na obawy o szybkość.Odpowiedzi:
Pewnie! Kod jest tutaj , zaczynając od funkcji
islt
i kontynuując przez chwilę QUITE ;-). Jak sugeruje komentarz Chrisa, jest to kod C. Będziesz także chciał przeczytać ten plik tekstowy, aby uzyskać wyjaśnienie tekstowe, wyniki itp.Jeśli wolisz czytać kod w Javie niż w C, możesz przyjrzeć się implementacji sortowania czasu w Javie i dla Javy (Joshua Bloch jest również osobą, która wdrożyła w 1997 r. Zmodyfikowany scalak, który jest nadal używany w Javie, i można mieć nadzieję, że Java będzie w końcu przełącz się na swój ostatni port sortowania czasu).
Niektóre wyjaśnienia portu Java timsort jest tutaj , jest diff tutaj (z wskazówki dla wszystkich potrzebnych plików), plik klucza jest tutaj - FWIW, podczas gdy ja jestem lepszy niż C programista programista Java, w tym przypadku uważam, Kod Javy w Javie jest ogólnie bardziej czytelny niż kod Tima w C ;-).
źródło
list_ass_item()
robi ta funkcja . :)listsort.txt
dodaje kilka zauważa, że adres wspólnych nieporozumień.Chciałem tylko dostarczyć bardzo pomocny link, którego przegapiłem w wyczerpującej odpowiedzi Alexa: ogólne wyjaśnienie sortowania czasu w Pythonie (z wizualizacjami wykresów!).
(Tak, algorytm jest teraz zasadniczo znany jako Timsort )
źródło
We wczesnych wersjach Pythona funkcja sort zaimplementowała zmodyfikowaną wersję quicksort. Jednak został uznany za niestabilny i od wersji 2.3 przeszli na używanie adaptacyjnego algorytmu scalania.
źródło