Algoritme apa yang digunakan sort()
metode bawaan dengan Python? Apakah mungkin untuk melihat kode untuk metode itu?
python
algorithm
sorting
python-internals
Johannes
sumber
sumber
sort()
metode ini, atau apa pemformatannya ke penerjemah, tetapi harus ada di sana di suatu tempat, dan saya yakin ini diterapkan di C karena masalah kecepatan.Jawaban:
Tentu! Kode ada di sini , dimulai dengan fungsi
islt
dan dilanjutkan untuk CUKUP beberapa saat ;-). Seperti komentar Chris, ini adalah kode C. Anda juga akan ingin membaca file teks ini untuk penjelasan tekstual, hasil, dll.Jika Anda lebih suka membaca kode Java daripada kode C, Anda dapat melihat implementasi Joshua Bloch dari timsort di dan untuk Java (Joshua juga orang yang mengimplementasikan, pada tahun 1997, mergesort yang dimodifikasi yang masih digunakan di Java, dan orang dapat berharap bahwa Java akan akhirnya beralih ke port timsort terbarunya).
Beberapa penjelasan tentang port Java timsort ada di sini , perbedaannya ada di sini (dengan petunjuk ke semua file yang dibutuhkan), file kuncinya ada di sini - FWIW, sementara saya programmer C yang lebih baik daripada programmer Java, dalam hal ini saya temukan Kode Java Joshua lebih mudah dibaca secara keseluruhan daripada kode C Tim ;-).
sumber
list_ass_item()
. :)listsort.txt
menambahkan beberapa catatan yang kebingungan alamat umum.Saya hanya ingin memberikan tautan yang sangat membantu yang saya lewatkan dalam jawaban Alex yang sebaliknya komprehensif: Penjelasan tingkat tinggi tentang timsort Python (dengan visualisasi grafik!).
(Ya, algoritme pada dasarnya dikenal sebagai Timsort sekarang)
sumber
Pada versi python awal, fungsi sortir menerapkan versi quicksort yang dimodifikasi. Namun, itu dianggap tidak stabil dan sejak 2.3 mereka beralih menggunakan algoritme mergesort adaptif.
sumber