分析执行Find(a,0,n-1,x)的时间复杂度

int Find(ElemType a[ ],int s,int t,ElemType x)

{ int m=(s+t)/2;

 if (s<=t)

 {    if (a[m]==x)

          return m;

     else if (x<a[m])

          return Find(a,s,m-1,x);

     else

          return Find(a,m+1,t,x);

 }

 return -1;

}


是log(n),可以改成T(n) = T(n/2) + a, T(1) = b,这样的形式求解然后目测得复杂度

你这个是二分搜索,所以时间复杂度是 O=Log(n)

问题解决的话,请采纳

设find(a,0,n-1,x)的执行时间为T(n),当n=1时,T(n)=1,
当n>1时,T(n)=T(n/2)+1

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

设Find(a,0,n-1,x)的执行时间为T(n),则有:
T(n)=1 当n=1
T(n)=T(n/2)+1 当n>1
不妨设n=2k,即k=log2n。
T(n)=T(n/2)+1=T(n/22)+2=T(n/23)+3=…=T(n/2k)+k=1+k=log2n+1=O(log2n)。
该算法的时间复杂度是O(log2n)。