数据结构--时间复杂度

78 阅读1分钟

一.算法时间复杂度的定义

在进行算法分析时,语句总的执行次数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)

总结

微信图片_20240114134721.jpg

微信图片_20240114134914.jpg