Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 开关函数复杂性_Javascript_Performance - Fatal编程技术网

Javascript 开关函数复杂性

Javascript 开关函数复杂性,javascript,performance,Javascript,Performance,假设我们有一个开关功能,例如 switch (obj) { case 'Oranges': const { a, b } = obj; return a + b; break; case 'Apples': const { c, d } = obj; return c + d; break; case 'Bananas': const { e, f } = obj; return e + f; break;

假设我们有一个
开关
功能,例如

switch (obj) {
  case 'Oranges':
    const { a, b } = obj;
    return a + b;
    break;

  case 'Apples':
    const { c, d } = obj;
    return c + d;
    break;

  case 'Bananas':
    const { e, f } = obj;
    return e + f;
    break;

  default:
    return obj;
}
问题:该功能的时间复杂度是多少

问题2:如果我们将这里的案例数量提高到例如
100
,会怎么样?复杂性也会增加吗?如果是-多少次?

时间复杂度为O(n),与输入的数量无关。如果你开始在你的案例中加入for循环,那么这可能会改变它

下面是一个O(n^2)的例子,这意味着输入量将以指数方式增加时间复杂度。在本例中,它基于字符串长度,在一个3个字母的单词上产生12个循环

switch(foo){
  case 'bar':
    for (let i = 0; i < foo.length; i++){
      for (let j = 0; j < foo.length; j++){
        console.log(i, j);
      }
    }
}
开关(foo){
“酒吧”一案:
for(设i=0;i
这并不一定意味着嵌套for循环会自动将其设为O(n^2)。以下示例实际上是O(1),因为输入对所需时间没有影响。这将始终是210个循环,无论:

switch(foo){
  case 'bar':
    for (let i = 0; i < 10; i++){
      for (let j = 0; j < 20; j++){
        console.log(i, j);
      }
    }
}
开关(foo){
“酒吧”一案:
for(设i=0;i<10;i++){
对于(设j=0;j<20;j++){
控制台日志(i,j);
}
}
}

有多复杂?时间复杂性?空间复杂性?复杂性是一种表示函数效率的方式,它不会根据接收到的参数而改变