目录
概念
对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。
若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用顺序表存储最节省时间。
对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一个元素的时间复杂度分别对应为O(N)和O(1)。
在顺序表中逻辑上相邻的元素,其对应的物理位置也是相邻的。
顺序存储的线性表支持随机存取(直接访问任意数据的能力)。
在顺序表上进行插入、删除操作时需要移动元素的个数与待插入或待删除元素的位置有关。
顺序存储结构的主要缺点是不利于插入或删除操作。
顺序存储结构同时适用于线性结构和非线性结构。
若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用哪种存储方式最节省时间?:顺序表
用数组表示线性表的优点是便于随机存取。
线性表的顺序存储结构是一种随机存取的存储结构。
一个顺序表所占用的存储空间大小与表的长度、元素的类型、元素中各字段的类型有关。
要将一个顺序表{a0,a1,……,an−1}中第i个数据元素ai(0≤i≤n-1)删除,需要移动( n-i-1)个数据元素。
在向表中第i个元素(1≤i≤n+1)位置插入一个新元素时,为保持插入后表中原有元素的相对次序不变,需要从后向前依次后移(n-i+1 )个元素。
若长度为n的线性表采用顺序存储结构,那么删除它的第i个数据元素时,需要它向前移动 (n-i ) 个数据元素。
已知二维数组 A 按行优先方式存储,每个元素占用 1 个存储单元。若元素 A[0][0] 的存储地址是 100,A[3][3] 的存储地址是 220,则元素 A[5][5] 的存储地址是:300
假设顺序表第 1 个元素的内存地址是 100,每个元素占用 2 字节内存空间,则第 5 个元素的内存地址是108。
在有n个元素的顺序表中删除任意一个元素所需移动元素的平均次数为(n-1)/2。
在顺序表中进行顺序查找时,假设表的长度为n,查找一个特定值x的元素,等概率情况下,查找成功的平均比较次数是 (n+1)/2。
在等概率情况下,顺序表中插入一个结点需要平均移动n/2个结点。
对于顺序表的插入算法insert_sqlist来说,若以结点移动为标准操作,则插入算法的在最坏情况下的移动次数为n,时间复杂度是O(n)。在平均情况下的移动次数为n/2,时间复杂度是O(n)。
对顺序表进行不同操作的时间复杂度:
访问第i个元素的前驱(1<i<=n),O(1)
在第i个元素之后插入一个新元素(1<=i<n),O(n)
删除第i个元素(1<=i<=n),O(n)
对顺序表中元素进行排序O(nlogn)
通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致。
算法的时间复杂度取决于问题的规模和待处理数据的初态。
树是非线性数据结构,字符串、队列,栈都是线性数据结构。
数据的逻辑结构包括集合、线性结构、树形结构和图形结构四种基本类型,可以把它们分成线性结构和非线性结构。
与数据元素本身的形式、内容、相对位置、个数无关的是数据的逻辑结构。
代码
对与顺序表的基本操作的代码。