Python数据结构与算法—顺序表

本文介绍了顺序表的基本概念,包括其逻辑地址和物理地址的关系,以及顺序表的两种布局:基本布局和外置顺序表。讨论了Python中list和tuple作为顺序表的实现,并分析了它们的操作性能,如append的时间复杂度为O(1),而insert和删除指定元素的时间复杂度为O(n)。文章通过代码示例进一步阐述了顺序表在Python中的应用。
摘要由CSDN通过智能技术生成


一、基本概念

数据结构不仅仅指的数据值在逻辑上的结构,更有在存储空间上的位置结构,顺序表,故名思意是有一定顺序的数据结构。
顺序表最基本模型:
在这里插入图片描述
对于基本布局顺序表而言,它存储相同单元大小并且在内存地址上连续的数据,逻辑地址是其元素的逻辑顺序,物理地址第一个元素的内存地址加上离第一个元素的距离,如:e1物理地址是l0,那么e2的物理地址是e1的地址加上e1所占用的大小c,以此类推,en的物理地址是l0+(n-1)*c。

这种基本布局出现了一个问题,如果其中的元素大小不统一,那么岂不是要用最大存储单元作为基本单位,非常浪费空间,因此出现了外置顺序表,它是将元素的索引以相同单元大小连续存放,索引记录对应数据在内存上的地址,那么我们可以通过基本布局的方式去找到索引,再根据索引找到数据。
顺序表结构如图所示:
在这里插入图片描述
实际的顺序表包含两部分,一部分是顺序表的记录信息块(含顺序表容量、元素个数),一部分是数据块,这两部放在一起是一体式结构,如

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值