顺序表

形式

基本顺序表

- 元素存放空间大小相同

- 存储的是元素的值

在这里插入图片描述

元素外置顺序表

- 解决元素存放空间大小不一致
- 索引
- 存储的是元素的地址

在这里插入图片描述

公式Ln = L0 + n*c

  • Ln第n个元素首地址
  • n是偏移量 c是固定长度
  • L0 初始位置
  • 从1开始,则Ln=L1 + (n-1) * c , CPU会多进行一次减法运算

结构

一体式结构

- 表头和数据区,连续
- 表头:容量,已存储个数
- 数据区:元素值

在这里插入图片描述

分离式结构

- 表头和数据区,分离
- 表头:容量,已存储个数,存储区地址
- 数据区:可以在内存中连续空闲位置

在这里插入图片描述

存储区替换

- 一体式若存储空间不够,需整体搬迁,整个对象替换
- 分离式存储空间不够,只需重新生成数据区,顺序表对象不变

这个就可以解释python列表,用append,insert等新增元素,但整体的列表对象id不变

存储区扩充策略

- 线性扩充,每次扩充固定长度

	- 节省空间,但是扩充操作频繁,操作次数多

- 加倍扩充

	- 减少了扩充操作的执行次数,但可能会浪费空间资源。以空间换时间,推荐的方式

		- python列表存储,达到阈值,变为1倍,防止过度浪费
  • 增加元素

    • 末尾插入O(1)

      • python列表append
    • 非保序O(1)

    • 保序,插入后保持原有顺序O(n)

      • Python列表Insert
    • 可以看出append比insert效率高

  • 删除元素

    • 末尾删除O(1)
    • 非保序O(1)
    • 保序O(n)

Python列表

  • 采用分离式结构,元素外置的形式
  • 存储区扩充,前期加倍,达到阈值,改为加1倍
  • append效率比insert高
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值