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

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

目录

每行代码都需要注意

计算方法

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代码的时间复杂度:

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

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

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

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

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

 

相关推荐

  1. 代码关注时间复杂

    2024-05-13 22:20:04       12 阅读
  2. 时间复杂

    2024-05-13 22:20:04       18 阅读
  3. C++——时间复杂

    2024-05-13 22:20:04       11 阅读
  4. 时间复杂和空间复杂

    2024-05-13 22:20:04       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-13 22:20:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-13 22:20:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-13 22:20:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-13 22:20:04       20 阅读

热门阅读

  1. 深入理解Spring AOP中多切面拦截与异常处理

    2024-05-13 22:20:04       12 阅读
  2. Go语言流程控制(二)

    2024-05-13 22:20:04       12 阅读
  3. springboot整合s3,用ImageIO进行图片格式转换

    2024-05-13 22:20:04       12 阅读
  4. 设计模式——备忘录模式(Memento)

    2024-05-13 22:20:04       14 阅读
  5. 2008NOIP普及组真题 2. 排座椅

    2024-05-13 22:20:04       14 阅读
  6. kalman-filter python实现?

    2024-05-13 22:20:04       13 阅读