有一种叫做二分法的查找方法,然后大家都知道它的时间复杂度就是logN
(这里省略了底数2),我们知道时间复杂度其实就是算法执行完的步骤次数,那么logN
怎么来的呢。
我们知道二分法就是把一个数据规模为N的先分为N/2,然后再分为N/4,N/8,N/16…一直等分到N/y =1的时候就不分了,现在我们来考虑下,到底分多少次才能把规模为N的数据分到结果为1,这里假设为x次,这个x就是次数,也是我们用大O表示法表示的时间复杂度,我们只需要把x取到就可以了。
这里按我们的数学思维把规律列举一下。
次数 | 结果 | 规律 |
---|---|---|
1 | N/2 | N/2^1 |
2 | N/4 | N/2^2 |
3 | N/6 | N/2^3 |
4 | N/16 | N/2^4 |
我们很明显一眼就可以看出,假如x次后结果为1,那么
N/2^x = 1
2^x = N
x=logN
因此二分法的时间复杂度就是O(logN),是不是超级简单的。