随笔分类 -  数据结构与算法

摘要:一、 加权有向图概述 加权有向图是在加权无向图的基础上,给边添加了方向,并且一条加权有向边只会在一个顶点的邻接表中出现。 二、 加权有向图实现 为了体现边的有向性,我们需要知道边的起点和终点,参照如下来构建有向边,而有向图的构建只需在前面无向图的基础上,将无向边对象更换为有向边对象即可 /** * 阅读全文
posted @ 2020-12-05 18:56 纪煜楷 阅读(1690) 评论(0) 推荐(0) 编辑
摘要:一、 加权无向图概述 加权无向图是在无向图的基础上,为每条无向边关联一个成本或是权重值。 在导航中,我们常常需要判断图中由若干边组成的路径是否是长度最短,时间最短或是通行成本最低,权重不一定表示距离,可以多样化的表示为跟成本相关的数据。 二、 加权无向图实现 由于无向图的边关联了权重,因此需要把边作 阅读全文
posted @ 2020-12-04 20:26 纪煜楷 阅读(2484) 评论(0) 推荐(0) 编辑
摘要:一、 有向图概述 和无向图不同,有向图是具有指向性的图,是由一组顶点和若干有方向的边组成,每个有方向的边都连着两个有序的顶点。向有向图添加一条边时,只会根据指向有顶点v新增一条指向w的边 不需要w->v再添加一条。 二、 有向图定义与实现 出度:某个顶点指出的边的条数为该顶点的出度 入度:指向某个顶 阅读全文
posted @ 2020-12-04 20:17 纪煜楷 阅读(4156) 评论(0) 推荐(0) 编辑
摘要:一、 图概述 日常生活中使用的地图导航,每个城市看做一个顶点,城市与城市间连通的线路看做联通的边,就组成了图。除了导航,迷宫,电路板等等也是图,需要用图这种数据结构去解决很多连通问题。 二、 图的特性 图的定义:图是有一组顶点和一组能将顶点相连的边组成的数据结构 特殊的图: 平行边:连接同一对顶点的 阅读全文
posted @ 2020-12-04 20:13 纪煜楷 阅读(551) 评论(0) 推荐(0) 编辑
摘要:一、 并查集概述 并查集是一种树形结构,用来判断两个元素是否在同一棵树上,以及合并两个元素所在的树。 二、 并查集特性 并查集是一种树形结构,但它的特性不像2-3树,二叉树,红黑树那么复杂: 1、 每个结点都只有一个元素,每一组元素都在一棵树上 2、 一个组中的元素和另一组的元素间没有任何联系 3、 阅读全文
posted @ 2020-12-02 00:01 纪煜楷 阅读(433) 评论(0) 推荐(0) 编辑
摘要:一、 索引优先队列 上一章节的数据结构(八):优先队列-大小优先中,能够快速的从队列中取出最大最小值并删除,但有个缺点,就是无法通过索引快速的找到某个值,并且修改它,对于能快速根据索引查找到值的需求 我们使用索引优先队列来实现。 二、 最小索引优先队列思路 步骤一:实现索引优先队列,直观的想法是对数 阅读全文
posted @ 2020-11-29 16:09 纪煜楷 阅读(343) 评论(0) 推荐(0) 编辑
摘要:一、 优先队列的概述 在前面的数据结构(三):线性表-栈,队列中记录到,队列是先进先出的结构,元素在队列末端添加,在队列前头删除,若使用该队列的数据结构,则当要找出队列中的最大最小值时,需要遍历队列 对每个元素做比较后得出,这样在实际的生产应用中效率是很低的,这时就需要有一种队列,能快捷的获取队列中 阅读全文
posted @ 2020-11-29 16:06 纪煜楷 阅读(2466) 评论(0) 推荐(0) 编辑
摘要:一、 堆的概述 堆是计算机中一种重要的数据结构,它是完全二叉树的数组体现。 二、 堆的特性 2.1、堆是完全二叉树 堆是完全二叉树的数据结构,除了树的最后一层结点不需要是满的,其他各层级从左到右都必须是满的,如果最后一层结点没有满,那么要求是左满右不满 2.2、堆用数组来实现 堆是用数组来存储上述完 阅读全文
posted @ 2020-11-29 16:00 纪煜楷 阅读(938) 评论(0) 推荐(0) 编辑
摘要:一、 B-树概述 B-树是在2-3树的基础上,一个结点允许多个键(>=3)存在的树状数据结构。 二、 B-树特性 B-树允许一个结点存在>=3个键 一颗M阶的B-树,存在M-1层的树层级 一颗M阶的B-树,每个结点最多有M-1个键,并且升序排列 每个结点最多能有M个子结点 根结点至少有两个子结点 如 阅读全文
posted @ 2020-11-29 15:50 纪煜楷 阅读(627) 评论(0) 推荐(0) 编辑
摘要:一、 红黑树概述 红黑树是对2-3树的编码,即用二叉树结点单键单值的形式来表示2-3树,具体措施是对两个结点相连的链接标记颜色。 红链接:将相连的两个2-结点链接起来表示一个3-结点,即我们将3-结点表示为由一条左斜的红色链接相连的两个2-结点 黑链接:即普通的2-结点 二、 红黑树特性 红黑树是存 阅读全文
posted @ 2020-11-29 15:41 纪煜楷 阅读(329) 评论(0) 推荐(0) 编辑
摘要:一、 二叉平衡树的时间复杂度 在数据结构(五):树中的二叉查找树中,我们发现当二叉树平衡时,我们查找一个元素需要遍历的层级是log(N+1),按照大O算法可得时间复杂度为logN,这种查找比链表和数组的O(N)算法要 高效得多。 但是当二叉树不平衡时,我们发现它的查找效率依旧是O(N),比如如下情况 阅读全文
posted @ 2020-11-29 15:33 纪煜楷 阅读(709) 评论(0) 推荐(0) 编辑
摘要:一、 树的概述 树是计算机中应用广泛的一种数据结构,日常生活中常见的图谱,公司组织结构等,都是树结构的数据。 树结构在计算机中是根朝上,叶子结点向下的。如图,它是由N个有限结点组成的具有层次关系的集合。 树有如下特点: 没有父结点的称为根结点 每个结点有0或多个子结点 每一个非根结点只有一个父结点 阅读全文
posted @ 2020-11-16 22:51 纪煜楷 阅读(855) 评论(0) 推荐(0) 编辑
摘要:数据结构(四):符号表 一、 符号表概述 符号表是存储键及对应值的数据结构,符号表中存储的元素由键,值和指向下一个值的指针域组成,可通过键查找到对应的值。 符号表中,键必须是唯一的,而值可以不唯一。 日常生活中,根据关键字百度查找资料,根据目录查找书籍内容,都是符号表使用的体现。 二、 符号表的构造 阅读全文
posted @ 2020-10-25 17:54 纪煜楷 阅读(1664) 评论(0) 推荐(1) 编辑
摘要:一、 栈概述 栈是将生活中的场景引入计算机中概念,古代的客栈,供旅客休息进出,我们把休息的过程作为数据的存储过程,进出作为数据的增删,于是有了线性表的另一种结构——栈。 栈是一种先进后出(FILO)的数据结构,是只能在一端进行数据插入和删除的线性表,按照先进后出的原则存储数据。 首先进入的数据被压到 阅读全文
posted @ 2020-10-25 17:50 纪煜楷 阅读(555) 评论(0) 推荐(0) 编辑
摘要:一、 线性表概述 线性表是最简单的一种的数据结构,由若干相同特征的数据元素组成的有限序列 在线性表中,若A在B元素前面,称A为B的前驱元素,B称为A的后继元素 没有前驱元素的的结点称为线性表的头结点,没有后继元素的结点称为线性表的尾结点 线性表按照存储元素的结构,可以分为顺序表和链表 二、 顺序表 阅读全文
posted @ 2020-10-25 17:47 纪煜楷 阅读(617) 评论(0) 推荐(0) 编辑
摘要:一、 排序算法概述 日常的程序设计中,排序是很常见的需求,把数据元素按照一定的规则进行排序,比如淘宝上的货品按照上架日期排序,百度的搜索按照最新的内容排序。 二、 冒泡排序 2.1排序原理 比较相邻的元素,如果前一个元素比后一个元素大,就交换两个元素的位置 第一次冒泡,最大的元素会被交换到最后的位置 阅读全文
posted @ 2020-10-25 17:25 纪煜楷 阅读(287) 评论(0) 推荐(0) 编辑
摘要:一、 数据结构与算法概述 1.1数据结构 数据结构是一门研究程序设计中的对象,以及他们的关系及操作的学科,说白了就是把各种数据元素按照一定的关系组织成集合,用来对其组织,存储和操作 1.2算法 算法即解决程序设计问题的方案,通过一定规范的输入,在一定时间内获得需求的输出结果 1.3程序 程序=数据结 阅读全文
posted @ 2020-10-25 17:12 纪煜楷 阅读(880) 评论(0) 推荐(0) 编辑