基于这篇基数排序文章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 元素,但我从那里丢失了它。一个简单的解释将非常有帮助。