我知道计数和基数排序通常被认为是在O(n)时间运行,我相信我理解为什么。然而,我在一项任务中被要求解释为什么这些类型可能不一定在O(n)时间内排列不同的正整数列表。我无法提出任何理由。
感谢任何帮助!
答案 0 :(得分:1)
要说计数或基数排序是O(n)实际上是不正确的。
Counting sort是O(n + k),其中k是数组中任何元素的最大值。
原因是您必须单步执行整个列表以填充计数(O(n)),然后逐步计算计数(O(k))。
Radix sort是O(mn),其中m是数字的最大位数。
原因是您必须为每个数字(O(n)m次)单步执行一次数组。