顺序表内存本质/Python_list实现
顺序表与元素外置顺序表
- 顺序表
- 元素在内存即物理地址上顺序存储,每个元素占有存储单元大小相同且固定,地址查询:Loc(ei)=Loc(e0)+c*i,c为存储单元大小
- 元素外置顺序表
- 实际元素另行存储,顺序表中保存其地址链接(类似指针),此处的c为存链接所需存储

- 实际元素另行存储,顺序表中保存其地址链接(类似指针),此处的c为存链接所需存储
顺序表的两种实现方式
- 一体式结构
- 整体性强,易于管理;顺序表创建后元素储存区固定
- 分离式结构
- 表对象只有容量与元素个数的信息,实际元素通过链接与基本表对象关联

长度变更时分配新的内存,释放原内存
- 一体式结构
- 连着表头重新分配
- 分离式结构
- 只变更表对象的物理存储,表头位置不变

- 只变更表对象的物理存储,表头位置不变
元素储存区扩充策略
- 增加固定储存位置;线性增长,节省空间,但操作次数多
- 翻倍扩充;减少操作次数,但浪费空间资源
Python中的顺序表
Python中的list和tuple是采取分离式技术实现的动态顺序表,其中tuple为不可变的顺序表;增删操作中,尾部增删时间复杂度O(1),其余O(n)
list
Python官方实现中,建立空表(或超小表),系统分配一块能容纳8个元素的储存区,执行insert或append时,原先储存区满就换一块4倍大的储存区,若表已经很大(超出阈值50000),改变策略为加一倍
本文探讨了顺序表的内存管理机制,包括元素内嵌与外置的两种存储方式,并介绍了Python中list的动态扩容策略,如初始分配8个元素的空间及后续的四倍和两倍扩容策略。
5791

被折叠的 条评论
为什么被折叠?



