顺序表

一. 顺序表的基本形式
顺序表: 将元素有序的存放在一块连续的存储区里面,元素间的顺序关系由他们的存储顺序自然表示。

在这里插入图片描述
顺序表的基本形式
a : 每个元素所占的存储单元大小固定相同
b: 每个元素所占的存储单元大小不相同,存储一个链接地址

在这里插入图片描述

二. 顺序表的结构与实现

  1. 顺序表的结构:
    一个顺序表的完整信息包括:
    1) 表中元素的集合
    2) 表的整体信息: 元素存储区的容量和元素的个数

在这里插入图片描述

  1. 顺序表的基本实现方式
    1) 一体式存储:
    存储: 存储表的信息的单元与元素存储区以连接的方式 安排在一块存储区里。
    存储区替换: 要想更换数据区,只能整体搬迁,即整个顺序表对象都改变了。

2)分离式存储:
存储: 存储表信息的单元与元素存储区以连续的方式安排在两块存储区里。
存储区替换:要想更换数据区,只需将表信息区中的数据区链接地址更新就可以了。
存储区扩容: 只有分离式结构的元素存储区才可以扩容
扩容策略:
(1) 每次扩充增加固定数目的存储位置,如每次扩充增加 10个元素位置,这种策略可以称作是线性增长。
特点: 节省空间,但是扩充操作频繁,操作次数多
(2) 每次扩充容量加倍,如每次扩充增加一倍存储空间
特点: 减少扩充操作执行次数,但可能会浪费空间资源,以空间换时间

在这里插入图片描述

三. 顺序表的操作

  1. 增加元素
    1) 表的尾端增加。 直接在表的尾端增加元素即可。 时间复杂度: O(1)
    2) 非保序增加 。 增加的元素在表中,将增加处的元素发放到最后,将要增加的元素,方法需要增加的位置。时间复杂度 O(1)
    3) 保序增加。 将元素插入顺序表中,然后插入的元素每个都向后移动。 时间复杂度 O(n)

在这里插入图片描述

  1. 顺序表的删除
    1)删除表尾元素: 直接将表尾元素删除 ,时间复杂度是O(1)
  1. 非保序的元素删除。
    3) 保序的元素删除。将顺序表的中间元素删除,后面的元素都要补上来,时间复杂度是
    O(n)

在这里插入图片描述

  1. python中的顺序表
    在python 中,list 和 tuple 两种类型采用的是顺序表的实现技术
    list 是可变类型,即采用分离式技术实现的动态顺序表
    tuple 是不可变类型,即是不可改变的顺序表
    python标准类型 list 就是一种元素个数可变的线性表,可以加入和删除元素
    1) 顺序表: 基于下标的高效元素访问和更新,时间 复杂度为O(1)
    2) 分离式技术 : 允许任意加入元素,而且在不断加入元素的过程中表对象的识别id 不变list 的元素存储区扩容的原则:
    1) 在建立空表(或者很小的表)的时侯,系统分配一块能容纳8个元素的储存区
    2) 在执行插入操作(insert 或者append)的时候,如果元素存储区满了就换一块四倍大的存储区。
    3) 如果此时的表已经很大了,则采用加一倍的方法。 因为为了笔迷爱你出现过多空闲的存储位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值