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 ...
随机推荐
- JS 测试 Prototype
JS 测试 Prototype 测试 JavaScript 框架库 - Prototype 引用 Prototype 如需测试 JavaScript 库,您需要在网页中引用它. 为了引用某个库,请使用 ...
- MySQL能否授予查看存储过程定义权限给用户
在其他RDBMS中,可以将查看某个存储过程(PROCEDURE)定义的权限给某个用户,例如在SQL Server中,可以单独将查看ProcedureName定义的权限授予UserA GRANT VIE ...
- How To Convert A Partitioned Table To A Non-Partitioned Table Using DataPump In 11g (Doc ID 1276049.1)
How To Convert A Partitioned Table To A Non-Partitioned Table Using DataPump In 11g (Doc ID 1276049. ...
- java基础 - 泛型的使用
泛型的使用方式有泛型类,泛型接口,泛型方法. 泛型的意思是把参数类型也当成参数传入,也就是在使用时(类实例化或调用方法时)传入类型. 泛型类 在实例化时传入参数类型,不能对泛型类使用instancec ...
- MyBatis的ResultMapping和ResultMap
MyBatis的ResultMapping和ResultMap Effective java 第3版中描述的Builder模式 Java设计模式14:建造者模式 2个类都使用了Builder来构建对象 ...
- java之==操作符和equals操作符
==操作符: 基本数据类型比较值: 引用数据类型比较引用(是否指向同一个对象) equals操作符: 引用数据类型比较引用(是否指向同一个对象) 对于String.File.Date.包装类来说,只比 ...
- JS Foo.getName笔试题解析,杂谈静态属性与实例属性,变量提升,this指向,new一个函数的过程
壹 ❀ 引 Foo.getName算是一道比较老的面试题了,大致百度了一下在17年就有相关文章在介绍它,遗憾的是我在19年才遇到,比较奇妙的是现在仍有公司会使用这道题.相关解析网上是有的,这里我站在 ...
- Scss换肤
项目中虽然没有一键换肤的要求,但是产品要求后期能换主题.在开发组件中涉及到主题的地方,要提取一些公用的变量,不要直接写死样式值.但是如果只是定义一些变量的话,只是完成控制颜色等值的提取.后期切换的话需 ...
- iOS中点击按钮跳转到外部浏览器和内部打开
如图所示,需要实现点击一个按钮,跳转到指定网页: -(void)pushBtnCellClickDeleate{ NSLog(@"跳转"); //在APP内部打开指定网页 UIWe ...
- iOS----------如何给github的README添加图片
1.在你的项目中建一个文件夹,专门存放图片.如果想简单操作的话,可以截个图直接拉到项目中. 2.将建好的文件夹上传到github进行同步 3.在github上找到图片的URL地址 4.按照如下格式 ...