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()
Odpowiedz
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 ;-).
+1, aby wiedzieć, gdzie to było. –
@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/ ;-). –
Chcę wiedzieć, co robi funkcja 'list_ass_item()'. :) –
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.
Po prostu chciałem dostarczyć bardzo pomocny link, którego brakowało mi w kompleksowej odpowiedzi Alex: A high-level explanation of Python's timsort (z wizualizacjami graficznymi!).
(Tak, algorytm jest w zasadzie znany jako Timsort teraz)
Link wydaje się być uszkodzony. – kzorro
Naprawiłem link. – twasbrillig
- 1. sortowania listę krotek w Pythonie
- 2. Lista sortowania w Pythonie (transpozycji)
- 3. sortowania licznik w Pythonie przez klawisze
- 4. Który algorytm sortowania jest używany w metodzie .NET Array.Sort()?
- 5. Mylić o błędzie wypożyczenia w metodzie struct
- 6. tablica sortowania o rozmiarze n
- 7. lambda vs. operator.attrgetter ('xxx') jako funkcja klucza sortowania w Pythonie
- 8. sortowania numpy tablicy na wielu kolumnach w Pythonie
- 9. O bubble rodzaju vs seryjnej sortowania
- 10. Zapytanie o sortowanie SQL alchemiczne sortowanie sortowania
- 11. sortowania listy listy w python
- 12. Obsługa znanych błędów i komunikatów o błędach w metodzie
- 13. Przekazywanie obiektu o nieznanym typie jako parametru w metodzie Java
- 14. redefiniowanie wbudowanej funkcji
- 15. C# Threading w metodzie
- 16. Uzyskiwanie szerszych wyników w wbudowanej konsoli PyCharm
- 17. Przekaż listę Pythona do wbudowanej funkcji rdzy
- 18. Jak o „pusty if” w Pythonie
- 19. pusty komunikat o błędzie w pythonie
- 20. O (1) indeksowana liczba całkowita w Pythonie
- 21. Uzyskaj informacje o funkcjach dzwoniących w pythonie
- 22. Chmura tagów sortowania i pozycjonowania w div o stałej szerokości
- 23. Mylenie o Pythonie min quizu
- 24. Korzystanie lambda w Pythonie
- 25. Tworzenie wbudowanej SVG z JS w HTML5
- 26. Pisanie wbudowanej aplikacji dla msp430?
- 27. GetType w metodzie statycznej
- 28. kolumny sortowania w Matlab
- 29. Jak wyjść metody w metodzie OnEntry o aspekcie PostSharp oparciu o stan
- 30. Java: Parametr Enum w metodzie
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ć. –
Czy wersja ma znaczenie? –
@melder: Nie =) Chcę tylko rzucić okiem na pro algorytm: P @chris: jak? – Johannes