时间复杂度

2019-03-06  本文已影响14人  小星star

算法的 时间复杂度

一个算法最重要的 时间 和 空间

无法在运行前得到具体的运行时间
但是可以估算基本操作的执行次数

在衡量算法的时候,有一个重要的指标 效率性;
时间复杂度和空间复杂度用来表示效率性

时间复杂度的定义:
在计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大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

上一篇 下一篇

猜你喜欢

热点阅读