CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
进阶实战语法算法996引擎快速排序

Lua快速排序:三数取中的基准优化

2026-09-26 16:46 作者:996 技术组 996引擎Lua教程传奇脚本进阶实战语法算法996引擎Lua快速排序

【语法】
一、隐蔽陷阱:手写快速排序固定取首元素当基准,遇到近乎有序的输入直接退化成平方级比较;三数取中——首、中、尾取中位数当基准,最坏情况概率大降。
二、底层原理:快排选定基准后分区:小的放左大的放右,基准归位再分治两侧;基准选取决定分区均衡度,三数取中让近乎有序的输入也能近似对半分。
三、正确代码:
错误写法。示例代码如下:

lua
local function qsort(t, lo, hi)
    if lo >= hi then return end
    local p = t[lo]                 -- 固定首元素,有序输入退化
    local i = lo
    for j = lo + 1, hi do
        if t[j] < p then
            i = i + 1
            t[i], t[j] = t[j], t[i]
        end
    end
    t[lo], t[i] = t[i], t[lo]
    qsort(t, lo, i - 1)
    qsort(t, i + 1, hi)
end

正确写法。示例代码如下:

lua
local function median3(t, lo, hi)
    local mid = math.floor((lo + hi) / 2)
    if t[mid] < t[lo] then t[lo], t[mid] = t[mid], t[lo] end
    if t[hi] < t[lo] then t[lo], t[hi] = t[hi], t[lo] end
    if t[hi] < t[mid] then t[mid], t[hi] = t[hi], t[mid] end
    return t[mid]                   -- 三数取中位作基准
end
-- 分区逻辑同上,基准换用 median3(t, lo, hi)

四、引擎验证:1 万个近有序数值排序:固定基准版退化到 5000 万次比较;三数取中版 12 万次,快 400 倍。
五、FAQ:问:递归层数可控吗?答:取中后分区近似对半,层数对数级安全。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

入门夯实语法算法

Lua随机数种子:math.random的播种规则

【语法】 一、机制原理 抛个坑:为什么每次重启客户端,界面上那批"随机"的每日提示都一模一样?因为 Lua 5.1 的 ma…

2026-09-27 17:30 996 技术组
进阶实战游戏功能

任务追踪:主线支线的追踪面板

【游戏】 一、规则机制 线上事故:追踪面板只有一个槽位,做支线时主线目标被顶掉,玩家转头就忘了主线做到哪。追踪面板改成主副分…

2026-09-27 17:30 996 技术组
入门夯实游戏功能

声音设置:音效与音乐的独立开关

【游戏】 一、规则机制 线上事故:一个总开关管所有声音,想关音乐留音效的玩家做不到,差评连片。声音设置拆成三路:音乐、音效、…

2026-09-27 17:30 996 技术组
入门夯实语法算法

Lua字符串截断:超长文本的省略号处理

【语法】 一、机制原理 一行代码拆解: text n and text:sub(1, n) .. "..." or text…

2026-09-27 17:30 996 技术组
进阶实战游戏功能

快捷键定制:按键映射与冲突检测

【游戏】 一、规则机制 隐蔽的坑:两个功能绑了同一个键,按一下两个同时触发,好不容易攒的道具被误丢。快捷键定制三步走:可映射…

2026-09-27 17:30 996 技术组
入门夯实游戏功能

背包整理:一键归类的排序规则

【游戏】 一、规则机制 隐蔽的坑:格子表中间被用过之后留下 nil 洞,整理时直接 sort,比较器一脚踩到 nil 当场报…

2026-09-27 17:30 996 技术组