ADB*_*ADB 3 algorithm complexity-theory
我想知道以下排序算法的复杂性(如在O(...)中):
排序将单个排序列表中每个桶的所有元素组合在一起:
或者在伪代码中:
for i from 0 to N
smallest = MAX_ELEMENT
foreach b in B
if bIndex[b] < b.length && b[bIndex[b]] < smallest
smallest_barrel = b
smallest = b[bIndex[b]]
result[i] = smallest
bIndex[smallest_barrel] += 1
Run Code Online (Sandbox Code Playgroud)
我认为复杂性将是O(n),但我发现复杂性的问题是,如果B增长,它比N增长具有更大的影响,因为它在B循环中添加了另一轮.但也许这对复杂性没有影响?
由于您已经有伪代码,因此很容易找到复杂性.你有2个嵌套循环.外部总是运行N-1次,内部总是| B |,其中| B | 是B组(桶数)的大小.因此,复杂度为(N-1)*| B | 这是O(NB).