javascript内置split函数的Big O

tla*_*tor 5 javascript big-o

例:

var string = "abcde";
var array = string.split("");
// array = ["a", "b", "c", "d", "e"]
Run Code Online (Sandbox Code Playgroud)

此拆分功能的摊销运行时间是多少?另外,如何在javascript中查看此类内置函数的源代码?

Bar*_*mar 6

使用空分隔符参数,split本质上等同于:

var len = string.length;
var result = Array(len)
for (i = 0; i < len; i++) {
    result[i] = string[i];
}
Run Code Online (Sandbox Code Playgroud)

这是O(len)

使用分隔符,它变成O(string.length * delimiter.length),因为在循环中的每一步,它都必须测试是否有 匹配delimiter


Rap*_*gée -4

编辑:OP确实问“这个分割函数的摊销运行时间是多少? ”。这是这个精确问题的答案

要获取函数的实际运行时间,请参阅: 如何测量函数执行所花费的时间

var start = new Date().getTime();

for (i = 0; i < 50000; ++i) {
// do something
}

var end = new Date().getTime();
var time = end - start;
alert('Execution time: ' + time);
Run Code Online (Sandbox Code Playgroud)

您无法查看 JS 源代码,因为它是内置于每个导航器中的。你可以看看Chromium 项目,也许你会找到你想要的东西。

我不知道如何获得分割的摊销时间,并且我认为您无法在无法访问源代码的情况下计算它。

  • 运行时间与 Big O 不同。 (3认同)
  • 公平地说,OP确实问了:*“这个分割函数的运行时间是多少?”*。但是,是的,运行时间并不能说明 Big-O 的任何情况。但这确实在技术上回答了@Amy 体内提出的问题。 (3认同)