我很好奇Lua的默认table.sort
使用的算法,只是因为它比我遇到的其他一些排序算法慢。我很好奇Lua的table.sort
是用C语言编写的,还是在Lua的库中。
答案 0 :(得分:6)
table.sort使用什么算法?
comment in tablib.c
(向上滚动)状态
/*
** {======================================================
** Quicksort
** (based on `Algorithms in MODULA-3', Robert Sedgewick;
** Addison-Wesley, 1993.)
** =======================================================
*/
您可以在我提供的链接上阅读源代码。
我也很好奇Lua的table.sort是用C语言编写的,还是在Lua的库中。
目前,所有直接使用Lua(io
,table
,math
,...)的库都是用C语言编写的。
答案 1 :(得分:3)
在内部,table.sort
使用快速排序,并且用C语言编写。请注意,快速排序不稳定。对我来说有点令人惊讶的是,Lua没有直接使用C qsort()
。
至于性能,很难分辨,因为有各种因素,例如,您正在与哪种语言和算法进行比较,以及正在测试哪种数据。