【发布时间】:2018-04-06 10:13:33
【问题描述】:
所以我遇到了这个问题:
我们必须在 0 和 n^3 之间对 n 个数字进行排序,时间复杂度的答案是 O(n),作者是这样解决的:
首先我们将这些数字的基数转换为 O(n) 中的 n,因此现在我们有最多 3 位数字(因为 n^3)
现在我们使用基数排序,因此时间是 O(n)
所以我有三个问题:
1.这是正确的吗?最好的时间?
2.如何在 O(n) 中转换 n 个数字的基数?像每个数字的 O(1) 一样?因为本网站以前的一些主题说它的 O(M(n) log(n))?!
3. 如果这是真的,那么这意味着我们可以在 O(n) 中对从 0 到 n^m 的任意 n 个数字进行排序?!
( 我搜索了关于转换 n 个数字的基数,有人说它 每个数字的 O(logn),有些人说 n 个数字的 O(n),所以我也对此感到困惑)
【问题讨论】:
-
我声明说 k=3 是 this 算法的常数是作弊,但要求竞争算法在其 O() 公式中使用
log(n)。