顺序表

结构

图a是一体式结构,存储表信息与元素存储区信息安排在一块存储区里.
图b是分离式结构,表对象里只保存于整个表有关的信息(容量和元素个数),实际数据元素存放在另一个独立的元素存储区里.通过指针链接.

二者区别:
如果增加元素超过了列表的最大存储量时,则需要新建一个数据区.
一体式结构若想更换数据区,则要整体更改;而分离式结构则只需要更改表信息区中的数据区链接地址即可.即该顺序表对象不变.

顺序表扩充
1.线性扩充:每次扩充增加固定数目的存储位置,节省空间,操作次数多
2.倍数扩充:浪费空间,操作次数少,推荐.

数据区存储方式

图a是基本形式,每个元素所占的存储单元大小相同,元素下标是逻辑地址,而物理地址(内存地址)则可以使用指针的方式(起始位置+n*单元字节)访问.所以访问指定元素无需从头遍历,通过计算就可以得到相应地址,复杂度为O(1)

图b是元素外置形式,顺序表存储的是地址,这也保证了每个单元的大小相同.
图b也被称为对实际数据的索引.

python数据结构的例子
list和tuple两种类型采用了顺序表的实现技术
list是采用分离式结构,元素外置形式,倍数扩充的顺序表

list各种方法的复杂度

Operation Average Case Amortized Worst Case
Copy O(n) O(n)
Append[1] O(1) O(1)
Pop last O(1) O(1)
Pop intermediate O(k) O(k)
Insert O(n) O(n)
Get Item O(1) O(1)
Set Item O(1) O(1)
Delete Item O(n) O(n)
Iteration O(n) O(n)
Get Slice O(k) O(k)
Del Slice O(n) O(n)
Set Slice O(k+n) O(k+n)
Extend[1] O(k) O(k)
Sort O(n log n) O(n log n)
Multiply O(nk) O(nk)
x in s O(n)
min(s), max(s) O(n)
Get Length O(1) O(1)

dict各种方法的复杂度

Operation Average Case Amortized Worst Case
Copy[2] O(n) O(n)
Get Item O(1) O(n)
Set Item[1] O(1) O(n)
Delete Item O(1) O(n)
Iteration[2] O(n) O(n)

参考文献:
https://wiki.python.org/moin/TimeComplexity

python 顺序表相关推荐

  1. python顺序表代码_python实现顺序表的简单代码

    顺序表即线性表的顺序存储结构.它是通过一组地址连续的存储单元对线性表中的数据进行存储的,相邻的两个元素在物理位置上也是相邻的.比如,第1个元素是存储在线性表的起始位置LOC(1),那么第i个元素即是存 ...

  2. python顺序表数组_数据结构 | 顺序表

    什么是数据结构? 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成. 简单来说,数据结构就是设计数据以何种方式组织并存储在计算机中. 比如:列表.集合与字典等都 ...

  3. python顺序表的实现_python中的顺序表

    Python中的list和tuple两种类型采用了顺序表的实现技术,tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似. list的基本实现 ...

  4. python顺序表的实现_数据结构:队列 链表,顺序表和循环顺序表实现(python版)...

    链表实现队列: 尾部 添加数据,效率为0(1) 头部 元素的删除和查看,效率也为0(1) 顺序表实现队列: 头部 添加数据,效率为0(n) 尾部 元素的删除和查看,效率也为0(1) 循环顺序表实现队列 ...

  5. python顺序表转置_Python:二维列表下标互换方式(矩阵转置)

    Python:二维列表下标互换方式(矩阵转置) 发布时间:2020-08-20 04:13:38

  6. 算法与数据结构(part4)--顺序表

    学习笔记,仅供参考,有错必纠 文章目录 算法与数据结构–基于python 顺序表 什么是线性表 什么是顺序表 顺序表的基本形式 顺序表的结构与实现 顺序表的结构 顺序表的两种基本实现方式 扩容策略 顺 ...

  7. 数据结构之python实现顺序表

    数据结构之python实现顺序表 顺序表是指采用顺序存储的方式来存储数据元素的线性表. 初始化以及创建顺序表 class SequenceList(object):def __init__(self) ...

  8. python代码大全表解释-Python中顺序表的实现简单代码分享

    顺序表python版的实现(部分功能未实现) 结果展示: 代码示例: #!/usr/bin/env python # -*- coding:utf-8 -*- class SeqList(object ...

  9. python代码大全表解释-python实现顺序表的简单代码

    顺序表即线性表的顺序存储结构.它是通过一组地址连续的存储单元对线性表中的数据进行存储的,相邻的两个元素在物理位置上也是相邻的.比如,第1个元素是存储在线性表的起始位置LOC(1),那么第i个元素即是存 ...

最新文章

  1. MUI框架 APP手机退出方式
  2. Flutter之Decoration(边框、圆角、阴影、形状、渐变、背景图像等)
  3. php flush 逐行显示_PHP逐行输出(ob_flush与flush的组合)
  4. centof7无法上网问题
  5. mac上配置rails开发环境
  6. 《数字孪生体技术白皮书》重磅发布(附完整版下载)
  7. ps用计算机,教你用photoshop绘制计算器
  8. SQL server中表数据自动生成拼音码
  9. openv Mat 之 forEach 操作
  10. 永中word页码怎么从第二页开始_Word文档”双面打印“全攻略,解决打印难题!...
  11. java dao 单元测试,你应该如何单元测试DAO层
  12. python中abs函数是什么意思_python abs函数怎么用
  13. 一个30岁转行程序员的心路历程
  14. 我们走在一起——走进京杭大运河漕运码头
  15. android模拟器 diy,DIY泡沫黏液模拟器
  16. 湖南大学计算机考研科目2020,2020湖南大学计算机与软件工程考研初试科目、参考书目、录取情况全解析...
  17. CorelDRAW 学习笔记(一)
  18. Spark中组件Mllib的学习16之分布式行矩阵的四种形式
  19. 知识点六:jQuery遍历-同胞Siblings(), next(), nextAll()
  20. 北斗二代接收模块预研报告

热门文章

  1. python获取表单数据的代码_使用flask和python从html表单获取表单数据
  2. 数据包络分析方法与maxdea软件_SEM常用的4种数据分析方法,让你的优化工作事半功倍!...
  3. python下载网页中的pdf文件_Python读取网页上的pdf文件,输出字符串
  4. 设计模式 C++工厂方法模式
  5. mysql删除表单挑数据_MySQL 删除数据表
  6. Tensorflow学习笔记(三)
  7. c语言推箱子程序设计贴吧,推箱子问题
  8. 用js实现一个无限循环的动画
  9. 计算机应用专业毕业论文总结,计算机技术与应用
  10. java 反射 proper_JAVA提高四:反射基本应用