table.sort使用什么算法?

我很好奇 Lua 的默认 table.sort 使用了什么算法,因为它比我遇到的一些其他排序算法要慢。我还想知道 Lua 的 table.sort 是否是在 C 语言的引擎中编写的,还是在 Lua 库中编写的。

点赞
用户2128694
用户2128694

table.sort 使用哪个算法?

tablib.c 中的注释(向上滚动一点)中写道:

/*
** {======================================================
** 快速排序
** (基于 Robert Sedgewick 的《MODULA-3 算法》;
** Addison-Wesley, 1993 年。)
** =======================================================
*/

你可以在我提供的链接中查看源代码。

我也很好奇 Lua 的 table.sort 是在引擎中使用 C 语言编写,还是在 Lua 库中。

目前,所有直接与 Lua 一起提供的库(iotablemath等)都是用 C 语言编写的。

2013-08-04 14:17:57
用户1009479
用户1009479

内部,table.sort 使用快速排序算法,且是用 C 语言编写的。需要注意的是,快速排序算法不是稳定排序。有点令我惊讶的是,Lua 没有直接使用 C 的 qsort()

至于性能,很难确定,因为有各种因素,例如,正在进行比较的编程语言和算法,以及正在测试的数据类型。

2013-08-04 14:18:27