时间复杂度
时间复杂度讲的是恒定机器中的执行次数和对应的变量的比例 也就是说在恒定机器内执行次数越多 那么时间复杂度越高,那么对应的时间复杂度越高 他的执行效率就越低。将时间复杂度降低那么就可以提高对应的效率。
时间复杂度(用O来表示)跟对应的执行次数成正比
O1 常数阶 每行代码执行一次
console.log('123')//1次
console.log('123')//1次
console.log('123')//1次
console.log('123')//1次
On 线性阶 循环执行多次由一个n变量来控制
for(var i=0;i<n;i++){
console.log('123')
}
Ologn 对数阶 由俩个变量来控制的 (递归)
var i = 2
while(i<n){
i*=k
}
Onlogn 线性对数阶 线性阶包含对数阶
for(var i=0;i<n;i++){
var j = 2
while(j<n){
j*=k
}
}
On2 平方阶 俩个线性阶包含
for(var i=0;i<n;i++){
for(var j=0;j<n;j++){
console.log('123')
}
}
On3立方阶 3个线性阶
Onk次方 k个线性阶
...
时间复杂度排序
O1<Ologn<On<Onlogn<On^2<On^3<On^k....
空间复杂度
空间复杂度讲的是在内存开辟上 有多个变量内存被同时开辟,开辟的内存越多对应的空间复杂度越高,占用的内存大小就越大。
总结
从上可得 循环嵌套不会超过俩次!从对应得时间复杂度来看 我们可以得到logn和n是比较性常用得 我
们发现logn是比n要快得,所以在后续得优化中我们采用logn级别得时间复杂度来替代n。对于for循环和while循环 对应得时间复杂度来说while要快于for循环,用while来替代for循环