一.算法时间复杂度的定义
在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随时间变化情况并确认T(n)的数量级.算法的时间复杂度,也就算法的时间量度,记作T(n)=O(f(n)).他表示随问题规模N的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度.
这样用写O()来体现算法时间复杂度的激发我们称之为大O记法
二.推导大O阶的方法
1.用常数1取代运行时间中的所有假发常数.
2.在修改后的运行次数函中,只保留最高阶项.
3.结果最高阶项存在且其系数不是1,而是去除所有系数,只保留最高项.
例3*n^3+n=3用大O表示就是O(n^2).
三,练习
int sum=0,n=100; //执行一次
sum=(1+n)*n/2; //执行一次
sout(sum); //执行一次
f(n)=3,推到大O阶则表示为O(1)
注意:不管常熟是多少,我们都记作O(1),没有O(2),O(3);
for(int i=0;i<n;i++){
//时间复杂度为O(1)的程序
}
那么当程序运行结束总共运行了n次,则为O(n)
里面在套层相同的循环则为O(n^2),以此类推.........
int count=1;
while(count<n){
count*=2;
}
计算公式为z^x=n-->x=log_2(n)