Big o 试论试次与基数排序的有效性

Big o 试论试次与基数排序的有效性,big-o,time-complexity,trie,radix-sort,Big O,Time Complexity,Trie,Radix Sort,基数排序的时间复杂度为O(kn),其中n是要排序的键数,k是键长度。类似地,trie中插入、删除和查找操作的时间复杂度为O(k)。然而,假设所有元素都是不同的,k>=log(n)不是吗?如果是这样,这意味着基数排序的渐近时间复杂度为O(nlogn),等于快速排序的时间复杂度,而trie操作的时间复杂度为O(logn),等于平衡二叉搜索树的时间复杂度。当然,常数因子可能会有显著差异,但渐近时间复杂性不会有显著差异。这是真的吗?如果是,基数排序和尝试是否比其他算法和数据结构有其他优势 编辑: Qui

基数排序的时间复杂度为O(kn),其中n是要排序的键数,k是键长度。类似地,trie中插入、删除和查找操作的时间复杂度为O(k)。然而,假设所有元素都是不同的,k>=log(n)不是吗?如果是这样,这意味着基数排序的渐近时间复杂度为O(nlogn),等于快速排序的时间复杂度,而trie操作的时间复杂度为O(logn),等于平衡二叉搜索树的时间复杂度。当然,常数因子可能会有显著差异,但渐近时间复杂性不会有显著差异。这是真的吗?如果是,基数排序和尝试是否比其他算法和数据结构有其他优势

编辑:


Quicksort及其竞争对手执行O(nlogn)比较;在最坏的情况下,每次比较将花费O(k)时间(键仅在最后检查的数字处不同)。因此,这些算法需要O(knlogn)时间。根据同样的逻辑,平衡二叉搜索树操作需要O(klogn)时间。

大O表示法不是这样使用的,即使基数排序的k>=logn,O(kn)意味着如果n加倍,处理时间将加倍,依此类推,这就是应该使用大O表示法的方式

基数排序的一个优点是它的最坏情况是O(kn)(快速排序的O(n^2)),所以基数排序比快速排序更能抵抗恶意输入。如果使用按位运算(以2的幂为基,并对较小的阵列使用带插入排序的就地msd基数排序),它的实际性能也会非常快

同样的参数也适用于尝试,它们可以抵抗恶意输入,因为在最坏的情况下,插入/搜索是O(k)。哈希表在O(1)中执行插入/搜索,但使用O(k)哈希,在最坏的情况下使用O(N)插入/搜索。此外,尝试可以更有效地存储字符串


检查

基数排序的渐近时间复杂度为O(NlogN),这也是Qucik排序的时间复杂度。基数排序的优点是它的最佳、平均和最坏情况性能相同,其中快速排序的最坏情况性能为O(N^2)。但它需要两倍于快速排序所需的sapce。所以,如果空间复杂性不是问题,那么基数排序是更好的选择