二分搜索的时间复杂度O(logN)如何得到

转自:http://yixiong89921.blog.163.com/blog/static/132537788201122105228637/

学过数据结构,当然当年也学过算法的时间复杂度的,不知道当年是不是会推倒时间复杂度,大概也就是根据基本语句的执行次数来获得最高的数量级吧

例如

i=0;

while(i<n){i++};//这条语句执行了N次

i=0;

j=0;

while(i<n)

{ while(j<n)

    {

         j++;//这条语句执行了n^2次

    }i++;j=0;

总共执行次数应该是n+n2次,但时间复杂度只关系最高次,这才是真正影响程序效率的地方,所以时间复杂度是O(n2)

下面进入正题,其实二分法的时间复杂度推导是十分简单的,只怪我脑袋短路了,送给脑袋跟我一样短路的人吧

二分法的关键思想是 假设该数组的长度是N那么二分后是N/2,再二分后是N/4……直到二分到1结束(当然这是属于最坏的情况了,即每次找到的那个中点数都不是我们要找的),那么二分的次数就是基本语句执行的次数,于是我们可以设次数为x,N*(1/2)^x=1;则x=logn,底数是2,

猜你喜欢

转载自blog.csdn.net/Zero_975/article/details/82765822
今日推荐