假设我们有一个字符串n,可以填充“a”或“b” 例如:n =“aaabbbab”,“ababababab”等。 我们定义了一个名为
的函数HalfA(n):
count a = 0;
for each i in n:
if n == 'a'
i++;
if i >= n.length/2
return true
return false
如果n具有均匀分布,则halfA的平均大小写复杂度是多少。直观地说,我认为它是len(n),但我不确定如何表明这一点。并且假设a比b更可能,并且它不是均匀分布,那么我如何计算平均情况呢?
答案 0 :(得分:1)
任何分发。
最佳案例:n =“a *”。
这将采取len(n)/2
步骤,因此最好的情况是:O(len(n))
最坏情况:n =“b *”。
这将需要len(n)
个步骤,因为您必须遍历整个数组。最糟糕的情况是O(len(n))
平均情况受最佳案例和最坏情况的限制。也就是O(len(n)) <= average case <= O(len(n))
。因此,平均案例复杂度为O(len(n))