2009-10-04 23 views
73

Jaki algorytm jest zbudowany w metodzie sort() w języku Python? Czy można rzucić okiem na kod tej metody?O wbudowanej w Pythonie metodzie sortowania()

+6

Oczywiście jest to możliwe, aby spojrzeć na kod dla metody - Python jest projektem open-source. Metoda prawdopodobnie jest zaimplementowana w C, więc musisz trochę wiedzieć o C, aby to zrozumieć. –

+0

Czy wersja ma znaczenie? –

+0

@melder: Nie =) Chcę tylko rzucić okiem na pro algorytm: P @chris: jak? – Johannes

Odpowiedz

84

Oczywiście! Kod to here, począwszy od funkcji islt i kontynuowanie przez chwilę QUITE a ;-). Jak sugeruje Chris, jest to kod C. Będziesz także chciał przeczytać plik tekstowy o tekstowym objaśnieniu, wynikach itp.

Jeśli wolisz czytać kod Java niż kod C, możesz spojrzeć na implementację timsortu Joshua Blocha w języku Java (Joshua's również facet, który zaimplementował w 1997 r. zmodyfikowany mergesort, który wciąż jest używany w Javie i można mieć nadzieję, że Java w końcu przejdzie na swój ostatni port timsort).

Niektóre wyjaśnienia portu Java timsort jest here, diff jest here (z wskazówki dla wszystkich potrzebnych plików), plik klucza jest here - FWIW, podczas gdy ja jestem lepszy niż C programista programista Java, w w tym przypadku uważam, że kod Java Joshua jest ogólnie czytelniejszy niż kod C Tim ;-).

+3

+1, aby wiedzieć, gdzie to było. –

+4

@Chris, "Przeglądaj źródła Pythona" jest skrótem we wszystkich paskach zakładek moich przeglądarek - wskazuje na http://svn.python.org/view/python/trunk/ ;-). –

+0

Chcę wiedzieć, co robi funkcja 'list_ass_item()'. :) –

7

We wczesnych wersjach Pythona funkcja sortowania zaimplementowała zmodyfikowaną wersję quicksort. Jednak został uznany za niestabilny i od wersji 2.3 przełączono go na algorytm adaptacyjnego mergesortu.

Powiązane problemy