【发布时间】:2015-07-08 06:17:28
【问题描述】:
根据这篇基数排序文章http://www.geeksforgeeks.org/radix-sort/,我很难理解在排序中某些方法的时间复杂度方面所解释的内容。
来自链接:
假设输入整数中有 d 个数字。基数排序需要 O(d*(n+b)) 时间,其中 b 是表示数字的基数,例如,对于十进制系统,b 是 10。d 的值是多少?如果 k 是最大可能值,则 d 将为 O(log_b(k))。所以整体时间复杂度是 O((n+b)*logb(k))。这看起来比基于比较的大 k 排序算法的时间复杂度要高。让我们首先限制k。令 k≤nc 其中 c 是一个常数。在这种情况下,复杂度变为 O(nlogb(n))。
所以我知道排序需要 O(d*n),因为有 d 个数字因此 d 通过,并且您必须处理所有 n 个元素,但我从那里丢失了它。一个简单的解释会很有帮助。
【问题讨论】:
-
这个 Quora 回答中有一个很好的解释:qr.ae/0pyTm
标签: algorithm sorting asymptotic-complexity radix