python--基础知识点梳理(之数据结构)
数据结构:
# 按逻辑结构(面向问题)分为:集合结构、线性结构、树形结构、图形结构 # 按物理结构(面向计算机)分为:
# 顺序存储结构(把数据元素放在地址连续的存储单元中,数据间的逻辑关系和物理关系一直。如数组)
# 链式存储结构(把数据元素放在任意的存储单元中,数据间使用指针关联。元素的存储关系不能反映其逻辑关系。如链表)
顺序表:(存储结构连续list、tuple)
# 优点:支持随机访问 # 缺点:插入和删除操作需要移动大量的元素,造成存储空间的碎片。顺序表适合元素个数变化不大,且更多是读取数据的场合。
链表:(存储结构上不连续,逻辑上连续)
# 缺点:不能顺序表随机读取 # 优点:链表犹豫增加了节点的指针域,空间开销比较大,可以充分利用计算机内存空间,实现灵活的内存动态管理
栈stack:
# 栈是一种数据集合,可以理解为只能在一端进行插入或删除操作的列表。先进后出
队列queue:
# 队列是一个数据集合,仅允许在列表的一端进行插入,另一端进行删除。先进先出
栈和队列的区别:
# 都是特殊的线性表,可以使用顺序存储结构和链式存储结构两种方式来实现。
链表:
# 单向链表:也称单链表,是链表中最简单的一种形式,它的没一个节点包含两个域,一个信息域(元素域)和一个链接与,这个链接指向链表中的下一个节点,而最后一个节点的链接域则指向一个控制 # 单向循环链表:单链表的一个变形是单向循环链接,链表中最后一个节点的连接中不再是None,而是指向单向链表的头结点 # 双向链表:每个节点有两个链接,一个指向前一个节点,当此节点为第一个节点时,指向空值,而另一个指向下一个节点,当此节点为最后一个节点时,指向空值
树:是一种抽象数据类型或是实作这种抽象数据类型的数据结构
分类:无序树、有序树
无序树(自由树):树中任意节点的子节点之间没有顺序关系。
特点:每个节点有零个或多个子节点
没有父节点的节点称为根节点
没一个非根节点有且只有一个父节点
除了根节点外,每个子节点可以分为多个不相交的子树
有序树:树中任意节点的子节点之间有顺序关系。
二叉树:二叉树是一种特殊的树,二叉树的特点是每个节点最多有两个子节点,二叉树适用范围最广,一颗多叉树也可以转化为二叉树
# 完全二叉树:对于一颗二叉树,假设其深度为d(d>1)。除了第d层外,其它各层的节点数目均已达最大值,且第d层所有节点从左向右连续地紧密排列,这样的二叉树被称为完全二叉树 # 满二叉树:所有叶节点都在最底层的完全二叉树,除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树
树的遍历:对树中所有节点信息的访问
分类:广度优先遍历、深度优先遍历
# 广度优先遍历:层次遍历,从树的root开始,从上到下从左到右遍历整个树的节点 # 深度优先遍历:沿着输的深度遍历输的节点,尽可能深的搜索树的分支 分类:先序遍历、中序遍历、后序遍历 先序遍历:根节点----》左子树----》右子树 中序遍历:左子树----》根节点----》右子树 后序遍历:左子树----》右子树----》根节点
算法的复杂度:时间复杂度、空间复杂度
时间复杂度:指执行算法所需要的计算工作量
# O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
#常数阶、对数阶、线性阶、nlogn阶、平方阶、立方阶指数阶、
空间复杂度:指执行这个算法所需要的内存空间
python中字典对象的实现原理
哈希表(也叫散列表):根据键值对而直接进行数据访问的数据结构,他通过把key和value映射到表中一个位置来访问记录,而这个映射函数叫做哈希函数,存放至的数组叫做哈希表
关系型数据库索引存储结构
hash树:从2开始连续的质数来建立一个10层的树,第一层为根节点
关系型数据库中,索引大多采用B/B+tree来作为存储结构,而全文搜索引擎的索引主要采用hash的存储结构。索引查找用B+树
hash树优点:结构简单、查找迅速、结构不变
缺点:无序,只能精确查找
B-树:根据键值分割往下分割,组成:键值(主键)、指针数据
B+树:只放主键和和指针,底层放数据,节省额外的开销,效率更高
B-tree与哈希索引的区别
B-tree的索引:按照顺序存储的,所以如果按照B-tree索引,可以直接返回,带顺序的数据,但这个数据只是该索引列含有的信息
适用于:精确匹配、范围匹配、最左匹配
hash索引:索引列值的哈希值+数据行指针,因此找到后还需要根据指针去找数据
适合:精确匹配
不适合:模糊匹配、范围匹配、不能排序
B+树相对于B-Tree有几点不同:
非叶子节点只存储键值信息
所有叶子节点之间都有一个链指针
数据记录都存放在叶子节点中
原作者:不做大哥好多年
链接:https://www.cnblogs.com/xiaonq/p/10405473.html#i1
python--基础知识点梳理(之数据结构)的更多相关文章
- 最全Python基础知识点梳理
本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象,也算是对于学习这门语言的一个总结与回顾.python的详细语法介绍可以查看官方编程手册,也有一些在线网站可以学习 python语言 ...
- Python基础知识点总结
Python基础知识与常用数据类型 一.Python概述: 1.1.Python的特点: 1.Python是一门面向对象的语言,在Python中一切皆对象 2.Python是一门解释性语言 3.Pyt ...
- Python基础知识点小结
1.Python基础知识 在Python中的两种注释方法,分别是#注释和引号(''' ''')注释,#注释类似于C语言中的//注释,引号注释类似于C语言中的/* */注释.接着在Python中 ...
- python 基础知识点整理 和详细应用
Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言 ...
- Python基础知识点整理(详细)
Python知识点整理(详细) 输出函数 print()可以向屏幕打印内容,或者在打开指定文件后,向文件中输入内容 输入函数 input([prompt])[prompt] 为输入的提示字符.该函数返 ...
- python 基础语法梳理
最近涉及到python的东西比较多,抽一点时间把基础语法规整下. 1.面向对象 #coding=utf-8 def _class_test_01(): s = squire(3,4) print(&q ...
- Python基础知识点
自学记录: 1.字符串 python中单引号和双引号使用完全相同. 使用三引号('''或""")可以指定一个多行字符串. 转义符 '\' 反斜杠可以用来转义,使用r可以让 ...
- python基础知识点四
网络编程(socket) 软件开发的架构: 两个程序之间通讯的应用大致通过从用户层面可以分为两种: 1是C/S,即客户端与服务端,为应用类的,比如微信,网盘等需要安装桌面应用的 2是B/S,即浏览器与 ...
- python基础知识点三
内置函数和匿名函数 python 一共有68个内置的函数:它们就是python提供给你直接可以拿来使用的所有函数 内置函数的图:链接 :https://www.processon.com/mindma ...
- python 基础知识点二
深浅copy 1对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的. l1 = [1,2,3,['barry','alex']] l2 = l1 l1[0] = 111 prin ...
随机推荐
- Cocos2d-x的坐标系统
推荐转至此处阅读<Cocos2d-x的坐标系统> Cocos2d-x的坐标系统 一.坐标系 二.Cocos2d-x的坐标系统 1.类别 2.定义 三.屏幕坐标系 & OpenGL坐 ...
- Mysql基本注入
实验环境:墨者学院Mysql手工注入漏洞测试靶场 后台源码没有进行任何字符过滤. 首先进入靶场环境 先用admin登陆试试 果然不行,这时看到用户登录下方有一个停机维护通知,点进去瞅瞅 看到这里链接上 ...
- js对文中某一处关键字自动检索和全文检索
部分检索: 代码: <%@ page language="java" contentType="text/html; charset=utf-8" pag ...
- 多线程编程学习七( Fork/Join 框架).
一.介绍 使用 java8 lambda 表达式大半年了,一直都知道底层使用的是 Fork/Join 框架,今天终于有机会来学学 Fork/Join 框架了. Fork/Join 框架是 Java 7 ...
- Git push error: http 411的解决方案总结
目录 一.事故现场 二.事故原因 三.解决方案 一.事故现场 git push 的时候报错如下: 将分支推送到远程存储库时遇到错误:Git failed with a fatal error, the ...
- Redis令牌桶限流
一 .场景描述 在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制.比如对于某个 用户,他在一个时间段(interval ...
- SVM算法核函数的选择
SVM支持向量机,一般用于二分类模型,支持线性可分和非线性划分.SVM中用到的核函数有线性核'linear'.多项式核函数pkf以及高斯核函数rbf. 当训练数据线性可分时,一般用线性核函数,直接实现 ...
- Cypress 之 常用API
.visit() 访问一个远程URL.>>详情参考 Cypress 之 cy.visit() cy.visit(url) cy.visit(url, options) cy.visit(o ...
- 测试:Oracle 19c RAC添加私网
最近有个客户需求是在某12.2版本的RAC环境上添加心跳网络,顺便考虑将之前的心跳网络改为asm专用.我目前只有19c的RAC的测试环境(19c是12c的最终稳定版本),直接测试验证下过程备忘. 1. ...
- java高并发系列【共34篇,强力建议观看】
第1天:必须知道的几个概念 第2天:并发级别 第3天:有关并行的两个重要定律 第4天:JMM相关的一些概念 第5天:深入理解进程和线程 第6天:线程的基本操作 第7天:volatile与Java内存模 ...