相关信息
堆栈的区别
js在 Go 等现代语言中,变量到底在堆还是栈,不完全由程序员决定。
如果一个局部变量在函数结束后还要被外部引用(比如返回了它的指针),编译器会将其**“逃逸”到堆上**。
优化建议:频繁在堆上分配小对象会加重 GC 负担。如果能利用栈分配(不逃逸),程序的运行效率会显著提升。
逻辑上是一个完全二叉树,分为大碓顶和小堆顶
物理上是一个数组
js假设某个节点的下标为 $i$(从 0 开始计数):
左子节点下标:$2i + 1$
右子节点下标:$2i + 2$
父节点下标:$(i - 1) / 2$(向下取整)
主要操作删除和插入(上浮和下沉)

本文作者:曹子昂
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!