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);
}
}
}
有多复杂?时间复杂性?空间复杂性?复杂性是一种表示函数效率的方式,它不会根据接收到的参数而改变