(数据结构)时间复杂度
时间复杂度是衡量一个算法好坏的标准,按照我的理解就是运行效率,运行时候的内存占比和运行时间。
比如一根10寸木棍,每3天被折去1寸,折掉整个木棍需要多少天?
答案是:3✖️10=30天。
假如木棍为n寸。
可以表达为:3✖️n=3n。
时间表达为:T(n)=3n.
而时间复杂度表达为O(n),那么如何计算时间复杂度呢?
三个计算标准:
1.如果运行时间为常量,用常数1表示。
2.只保留时间函数的最高阶项。
3.如果最高阶存在,那么去掉最高阶前面的系数。
void eat1(int n){
for(int i=0; i<n; i++){;
System.out.println("等待一天");
System.out.println("等待一天");
System.out.println("吃一寸木棍");
}
}
那么时间表达为:T(n)=3n,所以时间复杂度为:O(n)
void eat2(int n){
for(int i=1; i<n; i*=2){
System.out.println("等待一天");
System.out.println("等待一天");
System.out.println("等待一天");
System.out.println("等待一天");
System.out.println("吃一半面包");
}
}
那么时间表达为:T(n)=5log(2)n,所以时间复杂度为:O(log(2)n),
O(n)>O(log(2)n)