您正在提到的是美国国旗排序,它是一种高效的原址基数排序变体,可以将项目分配到数百个桶中。这是一种分布式排序,其中项目从输入分发到多个中间结构(在此情况下是桶),然后被收集并放置在输出上。 基数排序:时间复杂度为O(nk),空间复杂度为O(n+k),其中n是键的数量,k是数字(值)可以拥有的最大位数。 美国国旗排序:时间复杂度为O(n*k/d),空间复杂度为O(k),其中n是数字的位数,k是平均桶大小。 在american flag sort optimization中了解更多信息。阅读Engineering Radix Sort (1993),该论文介绍了两种算法之间的实验比较。Java 实现的美国国旗排序。