顺序存储结构是物理存储结构的一种,也是一种逻辑与物理保持一致性,说白了就是在一片地址连续内存空间存储数据的这样一种结构。举个例子来说,假如线性表中每个元素占a个存储单元,表中第1个元素在l(1)处,那么显然任意第i个元素在l(1)+(i-1)*a处。线性表的相关操作离不开四个字:取,读,插,删。由上面那个例子,线性表的存,读都是十分方便的,不管是要求在哪个位置操作,算一下就阔以了,所以时间复杂度都是O(1)。插入元素与删除元素也比较容易,下面简单讲解一下。
插入元素(假设要在第i个位置前插入):
1、判断插入位置是否合理,不合理选择抛出异常或动态改变容量
2、从最后一个元素依次遍历到第i个元素,统统往后移一个位置
3、插入元素
4、表长加1
删除元素(假设要删去第i个元素):
1、判断删除位置是否合理,不合理抛出异常
2、取出删除元素
3、从被删元素位置依次遍历到最后一个元素,统统向前移一个位置
4、表长减1
通过上述,大家可以看到,不同的位置会影响插入元素与删除元素时的时间复杂度而且处理的步骤主要就在移动上,移动的对象都是目标位置开始到最后一个元素!!如果恰好是最后一个元素位置,那就不用往后或往前移了,时间复杂度就是O(1),那如果是第一个元素呢,那就差不多要重新来过了,时间复杂度是O(n)!!所以它的平均时间复杂度还是O(n)。这也说明,线性表的顺序存储适用于存取元素的应用,元素个数最好稳定一些,不经常插入或删除。
BY ZJQ