数据结构和算法基础知识点

链表

1、链表是一种由节点组成的线性数据集合,每个节点通过指针指向下一个节点。它是 一种由节点组成,并能用于表示序列的数据结构。

2、单链表:每个节点仅指向下一个节点,最后一个节点指向空

3、双链表:每个节点有两个指针p,n。p指向前一个节点,n指向下一个节点,最后一个 节点指向空。

4、循环列表:每个节点指向下一个节点,最后一个节点指向第一个节点。

5、时间复杂度:索引:O(n),查找:O(n),插入:O(1),删除:O(1)

1、栈是一个元素集合,支持两个基本操作:push用于将元素压入栈,pop用于删除栈顶元素。

2、后进先出的数据结构

3、时间复杂度:同上

队列

1、队列是一个元素集合,支持两种基本操作:enqueue用于添加一个元素到队列, dequeue用于删除

2、先进先出的数据结构

3、时间复杂度:同上

1、树是无向的联通的无环图

2、二叉树:是一个树形数据结构,每个节点最多可以有两个子节点,称为左子节点和 右子节点。

3、满二叉树:二叉树中每个节点有0或者2个子节点。

4、完美二叉树:二叉树中每个节点有两个子节点,并且所有的叶子节点的深度是一样 的

5、完全二叉树;二叉树中除最后一层外,其他各层的节点数均达到最大值,最后一层 的节点都连续集中在最左边。

二叉查找树

1、是一种二叉树,其任何节点都大于等于左子树中的值,小于等于右子树中的值。

2、时间复杂度:索引查找插入删除均为O(log(n))

字典树

1、又称为基数树或前缀树,是一种用于存储键值为字符串的动态集合或关联数组的查 找树。树中的节点并不直接存储关联键值,而是该节点在树中的位置决定了其关联 键值,一个节点的所有子节点都有相同的前缀,根节点则是空字符串。

数状数组

1、又称为二进制索引树,其概念上是树,但以数组实现,数组中的下标代表树中的节 点,每个节点的父节点或子节点的下标可以通过运算获得。数组中的 每个元素都 包含了预计算的区间值之和,在整个树更新的过程中,这些计算的值也同样会被更 新。

2、时间复杂度:区间求和:O(log(n)),更新:O(log(n))

线段树

1、线段树是用于存储区间和线段的树形数据结构。它允许查找一个节点在若干条线段 中出现的次数。

2、时间复杂度:同上

1、堆是一种基于树的满足某些特征的数据结构,整个堆中的所有父子节点的键值都满 足相同的排序条件。堆分为最大堆和最小堆。在最大堆中,父节点的键值永远大于 所有子节点键值,根节点的键值是最大的。最小堆中,父节点的键值永远小于子节 点键值,根节点的键值是最小的。

2、时间复杂度:索引查找插入删除:同上,删除最大最小:O(1)

哈希

1、哈希用于将任意长度的数据映射到固定长度的数据。哈希函数的返回值被称为哈希 值哈希码或者哈希。如果不同的主键得到相同的哈希值,则发生了冲突。

2、Hash Map:hashmap是一个存储键值关系的数据结构,hash map通过哈希函数将键 值转化为桶或者槽中的下标,从而便于指定值的查找。

3、冲突解决:链地址法:在链地址法中,每个桶是相互独立的,每个索引对应一个元 素列表。处理hashmap的时间就是查找桶的时间与遍历列表元素的时间之和。

开放地址法:在开放地址法中,当插入新值时,会判断该值对应的哈希桶是否存在, 如果存在则根据某种算法依次选择下一个可能的地址,直到找到一个未被占用 的地址。开放地址即某个元素的位置并不永远由其哈希值决定。

1、图是G=(V,E)的有序对,其包括顶点或节点的集合V以及边或弧的集合E,其中E包 括了两个来自V的元素。

2、无向图:图的邻接矩阵是对称的,因此如果存在节点u到节点v的边,那节点v到 节点u的边也一定存在。

3、有向图:图的邻接矩阵是非对称的,因此如果存在。。。并不一定存在。。。

python数据结构与算法知识点_数据结构和算法基础知识点(示例代码)相关推荐

  1. python合并音频和视频_ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码

    安装 官网下载 选择需要的版本 将解压后得到的以下几个文件放置在E:\FFmpeg下 环境变量 此电脑--属性--高级系统设置--环境变量 在系统变量(也就是下面那一半)处找到新建,按如下所示的方法填 ...

  2. OpenCV4中有哪些视频背景/前景分割(背景建模/前景提取)算法的类,它们各自的算法原理、特点是什么,并附示例代码

    关于OpenCV4中有哪些视频背景/前景分割(背景建模/前景提取)算法的类,汇总如下: 上面的汇总不仅显示了OpenCV4中有哪些视频背景/前景分割(背景建模/前景提取)算法的类,还显示了它们的继承. ...

  3. python顺序表的实现_数据结构:队列 链表,顺序表和循环顺序表实现(python版)...

    链表实现队列: 尾部 添加数据,效率为0(1) 头部 元素的删除和查看,效率也为0(1) 顺序表实现队列: 头部 添加数据,效率为0(n) 尾部 元素的删除和查看,效率也为0(1) 循环顺序表实现队列 ...

  4. vrp 节约算法 c++_数据结构和算法(Golang实现)(8.1)基础知识-前言

    基础知识 学习数据结构和算法.我们要知道一些基础的知识. 一.什么是算法 算法(英文algorithm)这个词在中文里面博大精深,表示算账的方法,也可以表示运筹帷幄的计谋等.在计算机科技里,它表示什么 ...

  5. 数据结构折半查找例题_数据结构第9章例题与答案

    第九章  集合 一. 选择题 1.若查找每个记录的概率均等,则在具有n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度asl为(    ).[北京航空航天大学 2000 一.8 (2分 ...

  6. python nlp文本摘要实现_用TextRank算法实现自动文本摘要

    [51CTO.com快译]1. 引言 文本摘要是自然语言处理(NLP)领域中的应用之一,它必将对我们的生活产生巨大影响.随着数字媒体和出 版业的不断发展,谁还有时间浏览整篇文章/文档/书籍来决定它们是 ...

  7. java数据结构停车场管理问题_数据结构——停车场问题

    实验三 停车场模拟管理程序的设计与实现 本实验的目的是进一步理解栈和队列的逻辑结构和存储结构,进一步提高使用理论知识指导解决实际问题的能力. 一.问题描述 设停车场只有一个可停放几辆汽车的狭长通道,且 ...

  8. python 异常点检测 cook距离_异常检测算法汇总

    本文来自:https://github.com/Albertsr 第一部分:无监督异常检测 1. 算法 1.1 孤立森林(Isolation Forest) 算法论文: Isolation Fores ...

  9. 机器学习经典算法实践_服务机器学习算法的系统设计-不同环境下管道的最佳实践

    机器学习经典算法实践 "Eureka"! While working on a persistently difficult-to-solve problem, you disco ...

最新文章

  1. 语音文件转成文字怎么转
  2. html5 原生 弹窗,一起来看 HTML 5.2 中新的原生元素 dialog
  3. java知识点--基础篇(5)
  4. win32api.sendmessage模拟鼠标点击_安卓模拟器一键宏设置教程
  5. 前端页面-不可编辑控制
  6. 紧急通知!不要在MySQL中使用UTF-8编码!!!
  7. 买二手房满二满五怎么理解?什么意思?
  8. MySQL 相关知识细节及解析
  9. js基于后台数据实现table行列合并
  10. 卫星通信中信关站、关口站、地面终端的区分
  11. matlab转子动力学视频分析,基于ANSYS经典界面的光盘轴的转子动力学分析(谐响应分析)...
  12. stata--异方差检验
  13. php 安装扩展管理工具 pecl
  14. 计算机英语期末考试方案,【计算机英语论文】计算机实训考核方法改革方案(共4649字)...
  15. 如何给PDF文件添加书签及子书签
  16. mysql造1000万数据_MySQL制作具有千万条测试数据的测试库
  17. mysql与oracle实现行转列并指定分隔符
  18. Dockers 安装
  19. 【免费】小米即时消息云MIMC介绍——免费、简单实现IM
  20. 职高计算机基础工作计划,2019职高教师个人工作计划

热门文章

  1. 用SqlConnectionStringBuilder修改连接超时时间
  2. 将图像中的某种颜色设为透明
  3. Jupyter 中 ValueError: Duplicate names are not allowed.的问题解决
  4. 深度学习与自然语言处理 主要概念一览
  5. python之os.path.join
  6. 人脸方向学习(十六):Face Detection-BlazeFace解读
  7. VALSE学习(十九):VALSE2018-历届资源汇总
  8. 如何打开.chm文档(比如华为产品手册等)
  9. win10软件拒绝访问删不掉_谷歌工程师正在解决Windows 10防病毒软件导致谷歌浏览器不稳定问题...
  10. python最大公约数计算。从键盘接收两个整数_python如何求解两数的最大公约数