Steven Skienna的经典算法设计手册指出,链接列表在创建方面比动态数组更快。这就是Heap执行速度更快的原因吗?任何人都可以用操作系统解释它吗?
答案 0 :(得分:1)
链接列表和动态数组都在堆上维护。在动态数组中插入可能会导致数组增长,而对于链接列表,它将添加到结尾。即使插入位于链接列表的中间,也需要时间进行搜索,稍后只需要一个操作即可添加指向前一个节点的指针。链接列表不需要调整相邻的内存位置。
与链接列表相比,动态数组具有更快的索引 (恒定时间与线性时间)通常更快的迭代 改善参考地点; 但是,动态数组需要 在任意位置插入或删除的线性时间,因为全部 必须移动以下元素,而链接列表可以执行此操作 恒定时间。间隙缓冲区和缓冲区减轻了这个缺点 在下面的变体下讨论的分层矢量变体。另外,中的一个 高度分散的存储区域,可能是昂贵的或不可能的 为大型动态数组找到连续空间,而链接 列表不需要存储整个数据结构 连续。