时间复杂度
时间复杂度概述
在恒定的环境内,他的执行次数和对应的变量的比列构成的值为时间复杂度。时间复杂度是在一定程度上表示当前的程序的运行速度,时间复杂度越低那么运行速度就越快。还有一个就是我们需要考虑的空间复杂度,空间复杂度是指你的程序在运行的时候开辟的内存大小,空间复杂度越低占用的内存就越少(内存不再优先考虑)
时间复杂度的分类及示例
时间复杂度使用字母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次方阶
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix