【问题标题】:Complexity of inbuild functions of javascript [closed]javascript内置函数的复杂性[关闭]
【发布时间】:2019-08-08 19:32:26
【问题描述】:

我正在使用一个函数,我很想知道下面这个函数的时间和空间复杂度。

function containCommonElements(array1, array2) {
   return array1.some(item=> array2.includes(item))
}

并说明内置函数的复杂性是什么以及为什么?

【问题讨论】:

    标签: javascript data-structures time-complexity big-o


    【解决方案1】:

    Array.someArray.includes 都是线性搜索函数 O(n)。由于您在另一个内部使用一个导致复杂性:O(array1.length * array2.length)

    【讨论】:

      【解决方案2】:

      原生 javascript 函数不是在 javascript 中实现的,因此在后台查找实际信息有点困难。

      但是我发现this repository 展示了如何实现一些本机功能,包括Array.prototype.some

      Array.prototype.mySome = function(callback, context) {
          for (var i = 0; i < this.length; i++) {
              if (callback.call(context, this[i], i, this))
                  return true;
          }
          return false;
      };
      

      这意味着Array.prototype.some 的复杂度为O(n)

      我们可以有根据地猜测Array.prototype 可能具有相似的复杂性。

      这为您的函数提供了O(n²) 的复杂性。

      【讨论】:

        猜你喜欢
        • 2015-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-13
        • 2010-09-11
        • 1970-01-01
        • 2015-06-30
        相关资源
        最近更新 更多