时间频度/语句频度
- 时间频度也叫语句频度。时间频度表示代码运行的次数,代码运行的次数与时间正正比
- 小明去小红家,我们都知道两点直接线段最短。假设小明每走一步相当于,运行一次代码。则如果小明绕路走的话,走的步数越多,花的时间也越多。步数和所花的时间成正比。
- 时间频度通常用 T(n)表示
时间复杂度
算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。
时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。通常用T(o)表示
- 时间复杂度也称为时间渐进复杂度,时间复杂度相当于时间频度的简写版,忽略次要的,保留了主要的。在算法中主要看最复杂的执行时间最长的语句
- 时间频度/时间复杂度 T(n)/T(O) 如果n无限大比值不为0,T(n)=T(o),T(o)是时间渐进复杂度
- 时间频度忽略常数
for(int i=0;i<n;i++){
System.out.println("11");
}
System.out.println("1");
System.out.println("2");
System.out.println("3");
- 这里时间频度跟n有关系,n多少次里面的语句执行多少次,最后还要判断一次最后执行n+1
在加上后面执行三条语句则是n+1+3次
当n很大时,比如900000+4 时常数项可以忽略不记,不管执行多少次,常数项都是固定的
- 忽略低次项
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;j<n;j++){
}
}
}
for(int j=0;j<n;j++){
}
- 时间频度为:nnn+n =》 n的三次方+n
- 当n趋近于无穷大时可以忽略低次项n
- 可以忽略系数