数据结构学习笔记------线性表(2)

1、为了对线性结构的数据进行某数据的读写操作,采用顺序存储结构最为合适,因为随机存取的效率是最高的。我们一般认为,顺序存储结构指的是数组,如一维数组、二维数组等。以一维数组为例,只需要知道数组起始地址和元素在数组中的下标,就可以直接计算元素所在位置。
链式存储、索引存储和散列存储都达不到这么高的效率。

2、对顺序表的读取操作,时间复杂度为 O(1)。在第 i 个结点之后插入一个新结点,必须从后向前移动第 n、n-1、…、i+1 位置的元素,才能腾出第 i+1 个位置来存放该新插入结点。假设i是随机的,则在第i个位置之后插入一个新结点平均需要移动近一半表长的元素,时间复杂度为 O(n)。同理,删除第 i 个元素的时间复杂度也是 O(n)。

在一个长度为 n 的顺序表中删除第 i 个元素,第 i+1 个位置的元素移到第原第 i 个位置,第 i+2 个位置的元素移动到第i+1 个位置,…,第 n 个位置的元素移动到第 n-1 个位置,共需移动 n-i 个元素。

3、在顺序表中等概率删除一个元素平均需要移动的元素个数。长度为 n的顺序表共有 n+1 个插入位置,如图所示。

从表尾向表头方向开始计算,在第 n+1 个位置插入元素需要移动 0 个元素,在第 n 个位置插入元素需要移动 1 个元素,…,在第 1 个位置(位置从 1 开始算起)插入元素需要移动 n 个元素。故而,插入一个元素平均需要移动元素为

猜你喜欢

转载自blog.csdn.net/qiaoqi17/article/details/108023313