时间复杂度概述
在恒定的环境内,他的执行次数和对应的变量的比列构成的值为时间复杂度。时间复杂度是在一定程度上表示当前的程序的运行速度,时间复杂度越低那么运行速度就越快。还有一个就是我们需要考虑的空间复杂度,空间复杂度是指你的程序在运行的时候开辟的内存大小,空间复杂度越低占用的内存就越少(内存不再优先考虑)
时间复杂度的分类及示例
时间复杂度使用字母O来表示 他的对应分类和其执行次数的比列是相关的
O(1) 常数阶
console.log('hello world') //一切没有变量来控制的 只执行一次的代码他属于常数阶 O(1)
O(logn) 对数阶
//2 * 2 * 2 100-10求二的对数 log2(n-m) O(logn) var m = 10 var n = 100 var k = 2 while(m>n){ m *= k ; console.log('hello') }
O(n) 线性阶
//这个的执行次数由对应变量n控制 所以他属于线性阶 O(n) for(var i=0;i<n;i++){ console.log('hello world') }
O(nlogn) 线性对数阶
for(var i=0;i<n;i++){ var m = 10 var n = 100 var k = 2 while(m>n){ m *= k ; console.log('hello') } }
O(n平方) 平方阶
for(var i=0;i<n;i++){ for(var j=0;j<n;j++){ console.log('hello world') } }
O(n的立方) 立方阶
for(var i=0;i<n;i++){ for(var j=0;j<n;j++){ for(var k=0;k<n;k++){ console.log('hello world') } } }
O(n的k次方) k次方阶
总结
从上可得 循环嵌套不会超过俩次!从对应得时间复杂度来看, 我们可以得到logn和n是比较性常用的, 我们发现logn是比n要快得,所以在后续得优化中我们采用logn级别得时间复杂度来替代n。对于for循环和while循环, 对应得时间复杂度来说while要快于for循环,用while来替代for循环
O(1) > O(logn) 对数阶 > O(n) 线性阶 > O(n的立方) 立方阶 > O(n的k次方) k次方阶
标签:复杂度,while,logn,次方,时间,var From: https://www.cnblogs.com/hofenglang/p/16834158.html