假设我们有一个switch
函数,例如
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
?复杂性还会增加吗?如果是这样-多少次?
答案 0 :(得分:0)
无论输入数量如何,时间复杂度均为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);
}
}
}
不一定意味着嵌套的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);
}
}
}