算法的 时间复杂度
一个算法最重要的 时间 和 空间
无法在运行前得到具体的运行时间
但是可以估算基本操作的执行次数
在衡量算法的时候,有一个重要的指标 效率性;
时间复杂度和空间复杂度用来表示效率性
时间复杂度的定义:
在计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。
这个定义我看不出什么来。。
时间复杂度如何计算??
一个简单的例子:
image.png
下面的代码
void eat1(int n){
for(int i=0; i<n; i++){;
System.out.println("等待一天");
System.out.println("等待一天");
System.out.println("吃一寸面包");
}
}
这里的时间复杂度如何计算呢??
这里有三条基本操作执行
"等待一天"要执行n次;
之后两条也是,那么他的时间复杂度就是 n + n + n = 3n
消掉系数,变为了O(n)
使用极限来消除掉系数以及尾项
如何推导出时间复杂度呢?有如下几个原则:
1. 如果运行时间是常数量级,用常数1表示;
2. 只保留时间函数中的最高阶项;
3. 如果最高阶项存在,则省去最高阶项前面的系数。
T(n) = 3n
T(n) = O(n)
这个地方能练练手 https://blog.csdn.net/wydyd110/article/details/83069304
网友评论