数组会被销毁吗

数组会被销毁吗

for(let i=0;i<3;i++){
let list=[ ]}

每次循环都创建一个数组,之前的数组会被销毁吗,指向相同吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2022-05-06 10:06:38

同学你好,对于你的问题解答如下:

1、会被销毁,JavaScript是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放(销毁)

2、每次循环,都是新创建的数组,指向不相同

祝学习愉快~

  • 提问者 萧亦瑶 #1

    function k(arr) {

        if (arr.length <= 1) { return arr; }

        let base = arr[0];

        let list1 = [];

        let list2 = [];

        for (let i = 1; i < arr.length; i++) {

            if (arr[i] <= base) {

                list1.push(arr[i]);

            } else {

                list2.push(arr[i]);

            }

        }

        let left = k(list1);

        let right = k(list2);

        return left.concat([base]).concat(right);


    }

    那这个函数的空间复杂度是O(n)吗


    2022-05-06 10:53:33
  • 好帮手慕慕子 回复 提问者 萧亦瑶 #2

    不是的,同学可以画一下递归树,老师理解的是:每次函数调用都会递归两次,也就是二叉树,二叉树的高度是log(n),每一层的元素个数和为n,因此高度乘以层数就是用到的所有空间,即:空间复杂度为O(nlog(n)。

    祝学习愉快~

    2022-05-06 11:45:44
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师