在说“以前有人问过这个”或“找一本算法书”之前,请继续阅读并告诉我我的推理的哪一部分出了问题?
假设您有 n 个整数,并将它们分成 k 个 bin,这将花费 O(n) 时间。但是,需要对 k 个 bin 中的每一个进行排序,如果对每个 bin 使用快速排序,这是一个 O((n/k) log(n/k)) 操作,因此这一步将花费 O(n log(n/ k)+k) 最后需要组装这个数组,这需要 O(n+k),(参见这篇文章),所以总操作将是 O(n+n log(n/k)+k)。现在,这个 n log(n/k) 是怎么消失的,我完全想不通。我的猜测是有一些数学运算可以消除这个 n*log(n/k)。任何人都可以帮忙吗?