Python数据结构与算法2

本文详细介绍了顺序表的概念,包括一体式和分离式两种实现方式,重点讨论了元素存储区的扩充策略及其优缺点。顺序表的操作如增加和删除元素的时间复杂度分析,以及Python中list作为顺序表的实现。强调了list在元素访问和更新上的高效性,并说明了为何采用分离式实现来满足动态扩展的需求。
摘要由CSDN通过智能技术生成

1.顺序表
2.元素外置
3.顺序表的结构与实现
4.顺序表的两种基本实现方式
一体式:结构性强,易于管理。但是由于数据元素存储区域是表对象的一部分,顺序表创建后,元素存储区就固定了。
分离式:表对象里只保存与整个表有关的信息(即容量和元素个数),实际数据元素存放在另一个独立的元素存储区里,通过链接与基本表对象关联。
5.元素存储区扩充
每次扩充增加固定数目的存储位置,如每次扩充增加10个元素位置,这种策略可称为线性增长。
特点:节省空间,但是扩充操作频繁,操作次数多
没底扩充容量加倍,如每次扩充增加一倍存储空间
特点:减少了扩充操作的执行次数,但可能会浪费空间资源。以空间换时间,推荐的方式
6.顺序表的操作
增加元素
a 尾端加入元素,时间复杂度为O(1)
b 非保序的加入元素(不常见),时间复杂度为O(1)
C 保序的元素插入 ,O(n)
7.删除元素
a删除尾部元素,时间复杂度为O(1)
b 非保序的加入元素(不常见),时间复杂度为O(1)
c 保序的元素插入 ,O(n)
8.Python中的顺序表
Python中的list和tuple两种类型采用了顺序表的实现技术,具有上述性质。
List就是一种采用分离式技术实现的动态顺序表。
list特征:
基于下标的高校元素访问和更新,时间复杂度应该是O(1)
为满足该特征,应该采用顺序表技术,表中元素保存在一块连续的存储区中
允许加入任意元素,而且在不断加入元素的过程中,表对象的表示(函数的id得到的值)不变
为满足该特征,就必须更好元素存储区,兵器为保证更换存储区时的List对象的表示id不变,只能采用分离式实现技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值