C++中的时间复杂度O(1)与O(n)有什么区别
for(int i=0;i<1000;i++)与for(int i=0;i<n;i++) 其中n是用户输入的
这两个有什么不一样
常数 n
for(int i=0;i<1000;i++) for(int i=0;i<n;i++) 用户输入1000
for(int i=0;i<10000;i++) for(int i=0;i<n;i++) 用户输入10000
for(int i=0;i<10000;i++) for(int i=0;i<n;i++) 用户输入100000
我认为这两个还是成线形比 而不是O(1)成常数比, O(n)成线形比
C++中的时间复杂度O(1)与O(n)的主要区别在于:
1、时间复杂度O(1)是常数阶,其基本操作重复执行的次数是一个固定的常数,执行次数不存在变化;
2、而时间复杂度O(n)是线性阶,其基本操作重复执行的次数是与模块n成线性相关的,其值会随着模块n的变化而变化,当模块n的规模确定为定值后,其时间复杂度转化为O(1)。
扩展资料
1.时间复杂度的计算方法:
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得T(n)/f(n)的极限值(当n趋近于无穷大时)为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
例如:某算法的执行次数为 ,根据T(n)的数量级,则有 ,然后根据 T(n)/f(n) 求极限可得到常数c,则该算法的时间复杂度:T(n) = O(n^3) 。
2、常见的时间复杂度有:常数阶O(1),对数阶O( ),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3)等。
参考资料:百度百科:时间复杂度