1 变量类型不同,占的存储空间大小是不同的
2 顺序表
顺序存放,形式像表,称为顺序表
3 顺序表的形式
3.1 基本形式
数据元素本身连续存储,每个元素所占的存储单元大小固定相同,元素存储的物理地址可以通过存储区的起始地址加上逻辑地址与存储单元大小的乘积计算而得,即:
Loc(ej)=Loc(e0)+c*j
3.2 数据外置形式
如果元素大小不统一,则需采用元素外置的形式,将实际数据元素另行存储,而顺序表中各单元位置保存对应元素的地址信息。
4 顺序表的结构
顺序表由两部分组成,表头信息和数据信息,其中表头信息描述了表的容量以及已经使用的量。
4.1 一体式顺序表
存储表信息的单元与元素存储区以连续的方式安排在一块存储区里,两部分数据的整体形成一个完整的顺序表对象。
特点:整体性强,易于管理
缺点:顺序表创建后,元素存储区就固定
4.2 分离式顺序表
表对象里只保存于整个表有关的信息(容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过链接于基本表对象关联。
4.3 元素存储区替换
一体式结构更换数据只能整体搬迁,整个顺序表对象都改变。
分离式结构更换数据区,只需将表信息区中的数据区链接地址更新即可,顺序表对象不变。
4.4 动态顺序表
采用分离式结构的顺序表,若将数据区更换为存储空间更大的区域,可以在不改变表对象的前提下对其数据存储区进行扩充,所有使用这个表的地方都不必修改,这种表结构不会因为满了而导致操作无法进行,这种技术实现的顺序表称为动态顺序表。
4.5 扩充策略
4.5.1 固定数目扩充
每次扩充增加固定数目的存储位置
特点:节省空间,但是扩充操作频繁,操作次数多
4.5.2 加倍扩充
每次扩充容量加倍
特点:减少了扩充操作次数,但是可能会浪费空间资源,以空间换时间,是推荐的方式。
5 顺序表的操作
5.1 增加元素
尾部增加元素,时间复杂度O(1)
非保序元素加入,时间复杂度O(1)
保序元素加入,时间复杂度O(n)
5.2 删除元素
尾部删除元素,时间复杂度O(1)
非保序元素删除,时间复杂度O(1)
保序元素删除,时间复杂度O(n)
6 python中的顺序表
list是一种采用分离式技术实现的动态顺序表。
list实现策略:
建立空表,分配一块能容纳8个元素的存储区
元素存储区满则换一块4倍大的存储区
表足够大时(50000),改变策略,采用加一倍的方法。
原文:https://www.cnblogs.com/zhuome/p/11414362.html