算法的最差和平均复杂度?

时间:2014-10-11 20:15:38

标签: performance algorithm complexity-theory

输入是多个1(或无)的列表L,后跟多个2(或无)。下面的算法找到1的数量。对于一般情况,假设L具有包含1的等概率。

A(L):
     n=L.length
     m=sqrt(n)
     p=m-1
     while p<n and L[p]=1
         p+=m
     p-=m+1
     while p<n and L[p]=1
         p+=1
     return p

2 个答案:

答案 0 :(得分:1)

问题可以通过平分列表来解决O(log2(n))。

至于你在这里的算法,它的复杂性大约是O(2sqrt(n))。

答案 1 :(得分:0)

此循环只能在p到达n之前执行sqrt(n)次。

while p<n and L[p]=1
     p+=m
 p-=m+1

对于这个循环也是如此,因为p和n之间的差异小于sqrt(n)

 while p<n and L[p]=1
     p+=1
 return p

因此,在平均和最差情况下,您的复杂度为O(sqrt(n))。