数据结构:

# 按逻辑结构(面向问题)分为:集合结构、线性结构、树形结构、图形结构

# 按物理结构(面向计算机)分为:
  # 顺序存储结构(把数据元素放在地址连续的存储单元中,数据间的逻辑关系和物理关系一直。如数组)
  # 链式存储结构(把数据元素放在任意的存储单元中,数据间使用指针关联。元素的存储关系不能反映其逻辑关系。如链表)

顺序表:(存储结构连续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--基础知识点梳理(之数据结构)的更多相关文章

  1. 最全Python基础知识点梳理

    本文主要介绍一些平时经常会用到的python基础知识点,用于加深印象,也算是对于学习这门语言的一个总结与回顾.python的详细语法介绍可以查看官方编程手册,也有一些在线网站可以学习 python语言 ...

  2. Python基础知识点总结

    Python基础知识与常用数据类型 一.Python概述: 1.1.Python的特点: 1.Python是一门面向对象的语言,在Python中一切皆对象 2.Python是一门解释性语言 3.Pyt ...

  3. Python基础知识点小结

    1.Python基础知识 在Python中的两种注释方法,分别是#注释和引号('''   ''')注释,#注释类似于C语言中的//注释,引号注释类似于C语言中的/*   */注释.接着在Python中 ...

  4. python 基础知识点整理 和详细应用

    Python教程 Python是一种简单易学,功能强大的编程语言.它包含了高效的高级数据结构和简单而有效的方法,面向对象编程.Python优雅的语法,动态类型,以及它天然的解释能力,使其成为理想的语言 ...

  5. Python基础知识点整理(详细)

    Python知识点整理(详细) 输出函数 print()可以向屏幕打印内容,或者在打开指定文件后,向文件中输入内容 输入函数 input([prompt])[prompt] 为输入的提示字符.该函数返 ...

  6. python 基础语法梳理

    最近涉及到python的东西比较多,抽一点时间把基础语法规整下. 1.面向对象 #coding=utf-8 def _class_test_01(): s = squire(3,4) print(&q ...

  7. Python基础知识点

    自学记录: 1.字符串 python中单引号和双引号使用完全相同. 使用三引号('''或""")可以指定一个多行字符串. 转义符 '\' 反斜杠可以用来转义,使用r可以让 ...

  8. python基础知识点四

    网络编程(socket) 软件开发的架构: 两个程序之间通讯的应用大致通过从用户层面可以分为两种: 1是C/S,即客户端与服务端,为应用类的,比如微信,网盘等需要安装桌面应用的 2是B/S,即浏览器与 ...

  9. python基础知识点三

    内置函数和匿名函数 python 一共有68个内置的函数:它们就是python提供给你直接可以拿来使用的所有函数 内置函数的图:链接 :https://www.processon.com/mindma ...

  10. python 基础知识点二

    深浅copy 1对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的. l1 = [1,2,3,['barry','alex']] l2 = l1 l1[0] = 111 prin ...

随机推荐

  1. swift冒泡排序,swift快速排序,swift归并排序,swift插入排序,swift基数排序

    import UIKit /// 冒泡 /// ///时O(n2),空O(1) 稳定排序 func Mysort(arr:[Int]) -> [Int]{ var transArr = arr ...

  2. Navicat 软件的使用以及pymysql

    Navicat 软件的使用以及pymysql 一.navicate的安装及使用 下载 直接百度搜索navicate ,如下图 连接数据库 新建数据库以及新建表 选中然后鼠标右键 建模 利用navica ...

  3. RMAN RECOVER TABLE 功能是 Oracle Database 12c 的新增功能 (Doc ID 1521524.1)

    RMAN RECOVER TABLE Feature New to Oracle Database 12c (Doc ID 1521524.1) APPLIES TO: Oracle Database ...

  4. Mysql启动&关闭命令

    启动:net start mysql57 关闭:net stop mysql57

  5. linux-认识vi vim

    vi 编译器 Linux vi 命令非常强大,熟练地使用它可以高效的编辑代码,配置系统文件等 命令:vi [文件] vim [文件] vi 分为三种模式:命令模式.文字模式.末尾模式 -------- ...

  6. openstack_dashboard无法获取nova

    问题描述: 今天打开openstack的dashboard准备创建实例,结果计算节点每一项展开都无法获取nova 之前已经把nova搞好了并没有什么问题,怎么突然就服务也起不了了 查看了一下nova服 ...

  7. java中窗口的打开与关闭

    作为小白的我,今天学习了java中打开与关闭窗口的方法. 1.在java中创建一个窗口 import java.awt.*;import java.awt.event.*;public class L ...

  8. 深度学习VGG16模型核心模块拆解

    原文连接:https://blog.csdn.net/qq_40027052/article/details/79015827 注:这篇文章是上面连接作者的文章.在此仅作学习记录作用. 如今深度学习发 ...

  9. Postman安装出错.NET Framework 4.5 failed to install

    正常情况下安装Postman不会出错,联网下载即可,这里的异常是因为环境不允许升级.NET4.5 解决方法:找到Postman的安装文件夹,将postman.exe启动发现可以使用 若没有安装过的文件 ...

  10. Eclipse中Junit测试中@Before不执行

    场景 在使用Junit进行单元测试时,一部分获取JPA的entityManager的代码将其放在了 @Before标注的方法中,这样每次执行@TEST标注的方法时会首先执行@Before标注的方法. ...