【无标题】

核心原理考察

关于递归边界与终止条件

在通用的 MSD 基数排序中,对区间 [from, to) 在第 k 位进行排序时,除了 to - from <= 1 这种平凡情况外,还有哪两种非平凡但必须立即停止递归的情况?为什么在这两种情况下继续递归是错误或不必要的?

关于公共前缀(LCP)的本质作用

假设当前区间所有字符串的最长公共前缀长度为 L。在通用解法中,这个 L 是如何影响后续排序流程的?如果跳过 LCP 直接从第 k 位开始建桶和递归,算法的正确性是否受影响?性能呢?

关于分桶后的递归策略

在完成第 k 位的计数、求前缀和、重排之后,我们会得到若干个桶(每个桶内第 k 位相同)。在通用 MSD 中,哪些桶需要继续递归到第 k+1 位?哪些桶不需要?判断依据是什么?

关于稳定性与回退机制的设计思想

MSD 基数排序本身是不稳定的。但在实际工程中(包括这段 Lucene 代码),当子问题规模小于某个阈值时会回退到比较排序。

为什么 MSD 在小规模下性能反而不如比较排序?(提示:不是大 O 的问题)

如果要求整个排序是稳定的,回退的比较排序需要满足什么额外条件?