数据结构:

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

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

顺序表:(存储结构连续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. 深入理解JavaScript程序设计

    今天没事情回顾了一下我在去年4-6月份学习JavaScript程序设计的笔记.发现书到用时方恨少,感觉自己学的还不够深,准备抽时间啃一下<JavaScript高级程序设计>,同时深入了解一 ...

  2. PHP 生成 UUID 函数

    Generate name based md5 UUID (version 3) /** * Generate name based md5 UUID (version 3). * @example ...

  3. leetcode动态规划--基础题

    跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 思路 根据题目意思,最大跳跃距离,说明可以跳0--n ...

  4. HttpClient发起Http/Https请求工具类

    <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcl ...

  5. 关于AttributeError: 'NoneType' object has no attribute 'send_keys'

    在学web自动化测试时,通过PO模型将特定页面的一些元素及元素操作放在特定页面模块中, 然后提取公共的部分, 如元素等待WebDriverWait, 元素操作send_keys, click, 获取元 ...

  6. echarts 在 vue-awesome-swiper中无法点击

    回退vue-awesome-swiper版本到2.6.7 即可npm install vue-awesome-swiper@2.6.7 --save

  7. SQl Server 中的decimal( m , n )的意思

    create table sc( cno ), sno ), grade ,), primary key(cno,sno), foreign key(cno) references cou(cno), ...

  8. 利用百度文字识别API识别图像中的文字

      本文将会介绍如何使用百度AI开放平台中的文字识别服务来识别图片中的文字.百度AI开放平台的访问网址为:http://ai.baidu.com/ ,为了能够使用该平台提供的AI服务,你需要事先注册一 ...

  9. PHP+Ajax实现文章心情投票功能实例

    一个PHP+Ajax实现文章心情投票功能实例,可以学习了解实现投票的基本流程:通过ajax获取心情图标及柱状图相关数据,当用户点击其中的一个心情图标时,向Ajax.php发送请求,PHP验证用户coo ...

  10. Java生鲜电商平台-商家支付系统与对账系统架构实战

    Java生鲜电商平台-商家支付系统与对账系统架构实战 说明:关于生鲜电商平台,支付系统是连接消费者.商家(或平台)和金融机构的桥梁,管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号,支付 ...