Có ai biết về việc triển khai Cs C/C++ sạch không?thực hiện nhanh, sạch, C, timsort?
Các nguồn Python chứa description và code cho thời gian chờ ban đầu, nhưng có thể hiểu được đầy đủ các cuộc gọi cụ thể về python.
Cảm ơn!
Có ai biết về việc triển khai Cs C/C++ sạch không?thực hiện nhanh, sạch, C, timsort?
Các nguồn Python chứa description và code cho thời gian chờ ban đầu, nhưng có thể hiểu được đầy đủ các cuộc gọi cụ thể về python.
Cảm ơn!
Tôi đã viết một nhanh, mẫu giống như phiên bản trong C:
http://github.com/swenson/sort
Nó cũng bao gồm một loạt các thuật toán sắp xếp khác. Timsort dường như đánh bại nhanh chóng sắp xếp 5% hoặc hơn.
Triển khai này từ Android không có trong C, nhưng dễ hiểu hơn so với bản gốc trên SVN của Python.
http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/main/java/util/TimSort.java?view=co
Hy vọng nó tương đối dễ dịch sang mã C.
Tôi đã viết một cổng C++ với cùng giao diện như std :: sort(), với một số kiểm tra điểm chuẩn và đơn vị.
https://github.com/gfx/cpp-TimSort
Noe rằng vì việc thực hiện ban đầu là trong OpenJDK và giấy phép là GPL, giấy phép thực hiện của tôi cũng là GPL. Bây giờ nó được phân phối trong giấy phép MIT.
Tôi nhận thấy readme của bạn nói đó là loại "O (n^2)", nhưng trang Timsort Wikipedia cho biết trường hợp xấu nhất của nó là O (nlog n). –
Cảm ơn, đó là lỗi của tôi. đã sửa! –
FWIW giấy phép mã đã được đổi thành MIT vì câu trả lời này đã được đăng. – rotoglup