对于时间复杂度是指的算法语句的执行次数。一个算法语句的执行次数最终都是可以通过函数f(n)来形容的。
1:
int i = 0;
while(i < 100){
i++;
}
这里的i++就是算法语句,那么其f(n) = 100 - i -1;就可以知道他的时间复杂度了。
2:
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
console.log("-");
}
}
这输出语句就是算法语句,那么f(n)就是:f(n) = n * n = n的平方。
空间复杂度就是一个算法在运行过程中临时占用的存储空间大小,换句话说,就是被创建次数最多的变量,他被创建了多少次,那么这个算法的空间复杂度就是多少。eg:
for(int i = 0; i < n; i++){
int temp = i;
}
int temp = 0;
for(int i = 0; i < n; i++){
temp = i;
}
那么两者的区别很明显的了,前者的空间复杂度就是O(n),因为temp变量再不断的被创建n次。那么后者就是在循环之前就声明好了一个变量,开辟了一个内存空间,那么在循环中,只是不断的将此变量的地址值指向i的内存地址。只是一个引用的操作,所以,如果算法语句中,有创建对象,那么这个算法的时间复杂度和空间复杂度一般来说就是一致的。