【问题标题】: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.some 和 Array.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²) 的复杂性。