当前位置: 首页 > news >正文

你写代码,会关注时间复杂度吗?

虽然面试的时候总是被问到这个问题,但你写代码的时候,真的会想到这个问题吗?时间复杂度,说的当然不是你写的代码执行用了多长时间,而是代码执行语句的次数。

目录

每行代码都需要注意

计算方法

1 例如常量增长

2  嵌套循环

优化时间复杂度


每行代码都需要注意

试想一下,你用古老的方法写了一大段,然后还避免不了出个bug,然后其他同事做同样的功能,用了一个新方法,就写了一行代码,代码审查的时候,大家会怎么看你呢。

不过一般写代码的时候,倒是还不涉及太多的时间复杂度,因为你那一大段顶死也就是十几行或者二十几行,计算机执行这而是来行代码又能多复杂呢,时间复杂度,更多的时候,会用于涉及到算法的时候。

至于说到算法,可能就不是这几行,几十行的执行了,一个循环下来,稍有不慎,几百行几千行了就是。虽然这么说,但我们仍然要尽量避免写冗余的代码,毕竟几十行几十行下来,日旷持久,也是一种消耗。你可以在一行代码上下分别打印时间,做个记录,看看一段时间下来,你的用户们的设备执行这一行JS代码,会消耗多久的时间。

计算方法

那么我们该如何看自己代码或者写的一些算法的时间复杂度呢?通常计算时间复杂度,都是选取执行过程中,相对增长最高的项,或者理解为最坏的情况(或者是最耗时的情况)。

1 例如常量增长

如果有一个算法是计算常量的,哪怕执行上万次,复杂度也是O(1)

let n = 0;
for (let i=0;i<10000;i++) {n++
}

2  嵌套循环

例如我们的二维嵌套循环实现中,时间复杂度就是看得内部循环的语句决定的。例如下面的算法语句,看的主要是就是内部的循环次数,以此为基础,再算上外部的循环次数,看下面这个O(n*m)

for (i = 0; i < m; i++){for (j = 0; j < n; j++) {...// console.log(i);...}
}

 如果外层也是n不是m的话,那就是O(n^2)啦。

优化时间复杂度

优化JavaScript代码以降低时间复杂度是一个重要的目标,特别是当处理大量数据或执行频繁的操作时。以下是一些常见的技巧和策略,可以帮助你降低JavaScript代码的时间复杂度:

  • 减少循环嵌套: 循环嵌套是导致时间复杂度增加的主要因素之一。尽量避免不必要的嵌套循环,并尝试将算法重构为更简洁的形式。

  • 避免重复计算: 如果某些计算结果在算法执行过程中多次使用,可以考虑将其缓存起来,避免重复计算,从而提高性能。

  • 优化递归算法: 如果你使用递归算法,确保它的递归深度不会过深,以避免栈溢出。在可能的情况下,尝试将递归算法转换为迭代算法,因为迭代算法通常更有效率。

  • 避免不必要的对象创建: 避免在循环中创建大量临时对象,特别是在频繁执行的代码段中。

  • 利用缓存: 当需要频繁地访问某些计算结果时,可以考虑使用缓存来存储这些结果,以避免重复计算。

 

http://www.lryc.cn/news/348047.html

相关文章:

  • 【连连国际注册/登录安全分析报告】
  • linux进阶高级配置,你需要知道的有哪些(10)-远程访问
  • 不显示 表格 style=“display: none;“ 这个默认是不显示的
  • Bittensor怎么挖?手把手教你,使用bitget钱包
  • 领略Java内部类的“内部”
  • PHP 提取数组中的特定的值
  • SpringBoot、JAVA中excel、rtf、doc转PDF
  • 生信技能45 - 基于docker容器运行生信软件
  • 算法训练营第63天|LeetCode 84.柱状图中最大的矩形
  • python跟C++选哪个?
  • 速锐得深入解析吉利几何CAN总线数据通信网络的拓扑层级框架技术
  • 数据分析的数据模型
  • SQL注入-通达OA SQL注入漏洞【CVE-2023-4166】原理及检测思路分析
  • 数据结构(七)复杂度渐进表示
  • 3d如何同时贴两个图在模型上?---模大狮模型网
  • 【全开源】Java同城预约月嫂服务上门服务本地服务源码APP+小程序+公众号+H 5
  • 汇聚荣科技:拼多多开店时后期押金可以退吗?
  • 【机器学习与实现】K近邻算法
  • 【Python探索之旅】初识Python
  • MongoDB和AI 赋能行业应用:制造业和汽车行业
  • FileZilla一款免费开源的FTP软件,中文正式版 v3.67.0
  • 44.WEB渗透测试-信息收集-域名、指纹收集(6)
  • 【面经】Linux
  • TriCore:Interrupt 2
  • ollama api只能局域网访问,该怎么破?
  • 规则引擎drools Part5
  • API设计之争:一个接口一个职能还是一个页面所需字段?
  • 第一天复习Qt文件读取
  • 使用非官网购买Chatgpt的api调用
  • 通过 Java 操作 redis -- hash 哈希表基本命令