二分搜索的时间复杂度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+n^2次,但时间复杂度只关系最高次,这才是真正影响程序效率的地方,所以时间复杂度是O(n^2)

  

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

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


你可能感兴趣的:(数据结构)