Ответ 1
Я написал быструю, подобную шаблону версию в C:
http://github.com/swenson/sort
Он также включает в себя множество других алгоритмов сортировки. Кажется, что Timsort быстро победит на 5% или около того.
Кто-нибудь знает о чистой версии timsort для C/С++?
Источники Python содержат описание и code для исходный timsort, но он, по-видимому, заполнен вызовами, специфичными для python.
Спасибо!
Я написал быструю, подобную шаблону версию в C:
http://github.com/swenson/sort
Он также включает в себя множество других алгоритмов сортировки. Кажется, что Timsort быстро победит на 5% или около того.
Я написал порт С++ с тем же интерфейсом, что и std:: sort(), с некоторыми тестовыми и модульными тестами.
https://github.com/gfx/cpp-TimSort
Noe, потому что исходная реализация находится в OpenJDK, а ее лицензией является GPL, лицензия на мою реализацию также является GPL. Теперь она распространяется в лицензии MIT.
Эта реализация с Android не на C, но ее проще понять, чем оригинал, который на Python SVN.
http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/main/java/util/TimSort.java?view=co
Надеюсь, это относительно легко перевести на C-код.