当前位置:   article > 正文

【JavaScript系列】时间复杂度和空间复杂度_时间复杂度和空间复杂度 js

时间复杂度和空间复杂度 js

一、前言

时间复杂度和空间复杂度,我们在大学里的算法与数据结构课程中已经学习过,这回根据项目工作中整理一下,这个估计只是一个粗略的估计分析,并不是一个准确的估计分析。

1、学习时间复杂度和空间复杂度是很有必要的,这个属于算法与数据结构的范畴,学这个是为了解决代码中的“快”和“省”的问题。这样才能使你的代码运行效率更高,占用空间更小。代码执行效率需要通过复杂度分析。

2、数据规模的大小会影响到复杂度分析。比如排序,如果是一个有序的数组,执行效率会更高;如果数据量很少的时候,这个算法看不出性能上差别。

3、比如说不同物理机环境不一样,比如i3,i5,i7的cpu等等,运行内存1G,2G,4G,8G等等;时间上肯定有差别。

 

二、大O的复杂度

我们来看个简单的例子,一个循环累加器。

  1. function total(n) {
  2. var sum = 0; //t
  3. for (var i = 0; i < n; i++) { // nt
  4. sum += i; //nt
  5. }
  6. return sum; // t
  7. }

分析:假设每一行代码执行耗时都一样,为t,这样整个代码总执行时间为(t+nt+nt+t)=(2n+2)t。

我们再来看一个栗子:

  1. function total(n) {
  2. var sum = 0; // t
  3. for (var i = 0; i < n; i++) { //nt
  4. for (var j = 0; j < n; j++) { //n*n*t
  5. sum = sum + i + j; //n*n*t
  6. }
  7. }
  8. return sum; //t
  9. }

分析:假设每一行代码执行耗时都一样,为t,这样整个代码总执行时间为(t+nt+n*n*t*2+t)=(2n*n+n+2)t。

从数学角度来看,我们可以得出个规律:代码的总执行时间 T(n) 与每行代码的执行次数成正比.

所以上边两个函数的执行时间可以标记为 T(n) = O(2n+2) 和 T(n) = O(2n*n+n+2)。这就是大 O 时间复杂度表示法,它不代表代码真正的执行时间,而是表示代码随数据规模增长的变化趋势,简称时间复杂度

而且当 n 很大时,我们可以忽略常数项,只保留一个最大量级即可。所以上边的代码执行时间可以简单标记为 T(n) = O(n) 和 T(n) = O(n2)。

 

三、时间复杂度分析<

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/508096
推荐阅读
相关标签
  

闽ICP备14008679号