JavaScript-ES6阵列交换的时间/空间复杂度是多少?

前端之家收集整理的这篇文章主要介绍了JavaScript-ES6阵列交换的时间/空间复杂度是多少? 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

因此,您可以使用带有以下表示法的ES6交换数组元素:

let a = [1,2,3,4];
[a[0],a[1]] = [a[1],a[0]];
console.log(a); // [2,1,4];

但是我很好奇知道时间和空间的复杂性.

如果仅仅是语法糖:

var temp = a[0];
a[0] = a[1];
a[1] = temp;

然后我想它在时间和空间上都是O(1).

我想即使我们正在创建一个全新的数组来进行分解和赋值,由于我们只交换了几个元素,所以它们仍然是不变的.听起来对吗?

最佳答案
它可能更像是:

var temp1 = a[1];
var temp2 = a[0];
a[0] = temp1;
a[1] = temp2;

尽管仅在交换两个值时并不需要temp1,但我不希望编译器能够确定需要哪些临时变量,而在一般情况下不需要.

但无论哪种方式,它都是O(n),其中n是您要交换的元素数.任何中间临时变量都是一个恒定因素,它们不会影响时间复杂度.

我想这确实会影响空间的复杂性-如果编译器可以检测到只需要一个临时空间,那就是O(1)空间.

猜你在找的JavaScript相关文章