时间复杂度

什么是时间复杂度

所谓时间复杂度就是看循环持续的次数
注意这个次数不是代码的执行次数,而是循环整体的执行次数,一般是循环体的最主要语句的执行次数

二分查找为什么是log2n

1.每次迭代后,搜索区间减半:这是二分查找算法的关键特性。每次迭代后,要么在左半部分继续搜索,要么在右半部分继续搜索,但无论哪种情况,搜索区间的大小都减少了一半。

2.迭代次数与数组长度成对数关系:由于每次迭代后搜索区间减半,因此经过k次迭代后,搜索区间的长度将变为原来的(1/2)^k。当搜索区间长度变为1时(即high - low + 1 = 1),算法停止。设初始时搜索区间长度为n,则有(1/2)^k = 1/n,解这个方程得到k = log2n(这里的log是以2为底的对数)。

3.时间复杂度为O(log2n):由于算法的执行时间与迭代的次数成正比,而迭代的次数与n的对数成正比,因此二分查找算法的时间复杂度为O(log2n)。

简单来说

就是假设有n个数,每次循环区间减少一半,一共减少k次(这个k就是循环的次数),就是k*(1/2)^k = 1,得到k = log2n

你可能感兴趣的:(算法,c语言)