基数排序的时间复杂度是 O(kn),其中 n 是要排序的键的数量,k 是键的长度。类似地,在 trie 中插入、删除和查找操作的时间复杂度为 O(k)。但是,假设所有元素都是不同的,不是 k>=log(n) 吗?如果是这样,这意味着基数排序的渐近时间复杂度为 O(nlogn),与快速排序相同,而 trie 操作的时间复杂度为 O(logn),与平衡二叉搜索树的时间复杂度相同。当然,常数因子可能有显着差异,但渐近时间复杂度不会。这是真的吗?如果是这样,基数排序和尝试比其他算法和数据结构有其他优势吗?
编辑:
Quicksort 及其竞争对手执行 O(nlogn)比较;在最坏的情况下,每次比较将花费 O(k) 时间(密钥仅在检查的最后一位数字处不同)。因此,这些算法需要 O(knlogn) 时间。按照同样的逻辑,平衡二叉搜索树操作需要 O(klogn) 时间。