python数据结构与算法第五天【顺序表】
1.列表存储的两种方式
(1)元素内置方式
采用元素内置的方式只能存放同类型元素的数据类型,例如列表中的元素都为整形,元素类型相同,每个元素存放的地址空间大小也相同,则列表中每个元素都是顺序存放的
(2)元素外置方式
采用元素外置的方式能够存放所用不同类型元素的数据类型,例如列表中元素即有整形,又有字符串等,不同类型元素的存放空间大小不同,但是存放元素的逻辑地址本身的空间大小是一样的,均为4bytes,则列表中实际存放的是元素的逻辑地址
如图:

2.顺序表的一体式结构和分离式结构
(1)一体式结构:
表头信息与数据区一起存储,表头信息包括开始申请的最大存放元素个数,已存放元素个数
优点:查询方便,直接查询
缺点:当超过开始申请的最大存放元素个数时,重新申请存储空间,并修改新存储空间的表头信息,存储地址变化
(2)分离式结构:
表头信息与数据区分离存储,表头信息包括开始申请的最大存放元素个数,已存放元素个数,数据区的地址
优点:当超过开始申请的最大存放元素个数时,重新申请存储空间,直接修改原来表头的地址即可,且表头本身的存储地址不变
缺点:查询不是直接查询
如图:

3.顺序表扩充的方式
(1)每次扩充相同存储空间
例如:开始申请4个元素的存储空间,不够用时,再次扩充4个,不够用时,再扩充4个
(2)每次翻倍扩充存储空间
例如:开始申请4个元素的存储空间,不够用时,再次扩充8个,不够用时,再扩充16个
4.python列表添加元素和删除元素
(1)表尾插入元素
时间复杂度为O(1)
(2)非保序元素插入
时间复杂度为O(2)
(3)保序元素插入
时间复杂度为O(n)
如图:

5.python列表的实现
python列表打印id(my_list)的值永远不变,说明python列表是采用分离式结构实现的
python数据结构与算法第五天【顺序表】的更多相关文章
- [PTA] 数据结构与算法题目集 6-2 顺序表操作集
//创建并返回一个空的线性表: List MakeEmpty() { List L; L = (List)malloc(sizeof(struct LNode)); L->Last = -1; ...
- python数据结构与算法
最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...
- Python数据结构与算法--List和Dictionaries
Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...
- Python数据结构与算法--算法分析
在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...
- Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...
- Python数据结构与算法之图的广度优先与深度优先搜索算法示例
本文实例讲述了Python数据结构与算法之图的广度优先与深度优先搜索算法.分享给大家供大家参考,具体如下: 根据维基百科的伪代码实现: 广度优先BFS: 使用队列,集合 标记初始结点已被发现,放入队列 ...
- Python 数据结构和算法
阅读目录 什么是算法 算法效率衡量 算法分析 常见时间复杂度 Python内置类型性能分析 数据结构 顺序表 链表 栈 队列 双端队列 排序与搜索 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归 ...
- python数据结构与算法之问题求解
懂得计算机的童鞋应该都知道,一条计算机程序由数据结构跟算法两大部分组成.所以,其实不管你使用哪种计算机语言编写程序,最终这两部分才是一个程序设计的核心.所以,一个不懂得数据结构与算法的程序员不是一个好 ...
- Python数据结构与算法(几种排序)
数据结构与算法(Python) 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是 ...
随机推荐
- oldboy-作业01.登录多次进行账号锁定
"""可以支持多个用户登录 (提示,通过列表存多个账户信息)用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里) &q ...
- 总结 Linux 下安装 PHP 扩展步骤
总结一下 Linux 下安装 PHP 扩展步骤,这里以安装 PHP 的 redis 扩展为例. 一.拿到扩展包下载地址,下载扩展包 pecl 上搜索 redis wget http://pecl.ph ...
- 【编辑器】sublime 标题栏中文乱码问题
首选项--------设置-用户中添加"dpi_scale": 1.0,如下图所示 作者:smile.轉角 QQ:493177502
- 接口测试,获取登录后的cookies
参见: http://www.cnblogs.com/testwang/p/6023394.html
- 深入理解mongodb查询条件语句
阅读目录 1. 理解:"$lt"."$lte"."$gt" 和 "$gte" 2. 理解 '$ne' 3. 理解 &qu ...
- RabbitMQ详解(三)------RabbitMQ的五种队列
上一篇博客我们介绍了RabbitMQ消息通信中的一些基本概念,这篇博客我们介绍 RabbitMQ 的五种工作模式,这也是实际使用RabbitMQ需要重点关注的. 这里是RabbitMQ 官网中的相关介 ...
- Sequelize 连接微软云数据库 SQL Azure
function getConnection(){ var sequelize=new Sequelize("DBName","sa","000000 ...
- .net core实践系列之短信服务-架构优化
前言 通过前面的几篇文章,讲解了一个短信服务的架构设计与实现.然而初始方案并非100%完美的,我们仍可以对该架构做一些优化与调整. 同时我也希望通过这篇文章与大家分享一下,我的架构设计理念. 源码地址 ...
- 【转载】KETTLE集群搭建
一.集群的原理与优缺点 1.1集群的原理 Kettle集群是由一个主carte服务器和多个从carte服务器组成的,类似于master-slave结构,不同的是’master’处理具体任务,只负责任务 ...
- oc之封装「可输入值」的UIStepper
2017.07.17 18:10* 字数 66 阅读 644评论 0喜欢 5 oc之封装「可输入值」的UIStepper 最终效果 要求: Platform: iOS7.0+ Language: Ob ...