数据结构与算法
文章平均质量分 73
琅玕辉
这个作者很懒,什么都没留下…
展开
-
第一章 1.5union-find 算法
为了说明我们设计和分析算法的基本方法,我们通过学习一个基本的例子来说明:优秀的算法能够解决实际问题而变地很重要;高效的算法的代码很简单;理解某个实现的性能特点是一项有趣而令人满足的挑战;在解决同一个问题的多种算法之间进行选择时,科学方法是一种重要的工具;迭代式改进能够让算法的效率越来越高;为解决动态连通性问题设计算法的任务转化为了实现这份API,所有的实现都应该定义一种原创 2017-08-23 15:28:09 · 340 阅读 · 0 评论 -
第二章 2.4优先队列
优先队列定义 一种常见的数据结构,需要支持两种6+ 操作:删除最大(最小)元素和插入元素,这种数据结构类型叫做优先队列。优先队列的实现数组实现(无序):删的时候才找出最大的元素有序数组实现:insert的之后就排序链表表示法:基于链表的下压栈,可以选择修改Push或者Pop来实现功能对比 原因:许多应用程序都需要处理原创 2017-08-23 15:31:27 · 334 阅读 · 0 评论 -
第五章 单词查找树
我们可以利用字符串的性质来开发出比第三章更有效的查找算法。本节所讨论的算法有以下性能:查找命中所需的时间与被查找的键的长度成正比查找未命中只需检查若干个字符此处我们可以扩展第三章的符号表的API,添加基于字符的用于处理字符串类型的键的操作。扩展基于字符的符号表与普通符号表的区别为将泛型的Key的类型换成了具体的类型String;添加了3个方法:longestPref原创 2017-08-27 21:43:22 · 226 阅读 · 0 评论 -
第零章 数据结构基本知识
数据数据是信息的载体,它能够被计算机识别、存储和加工处理,是计算机程序加工的原料。随着计算机领域的发展,数据的范畴包括整数、实数、字符串、图像和声音等。数据元素数据元素是数据的基本单位,数据元素也称为元素、结点、顶点、记录。一个数据元素可以有若干个数据项(也可称为字段、域、属性)组成。数据项是具有独立含义的最小标示单位。数据结构数据结构指的是数据之间的相原创 2017-08-23 15:32:16 · 507 阅读 · 0 评论 -
第四章 4.3 最小生成树
加权图是一种为每条边关联一个权值或是成本的图模型,这种图能够自然地表示许多应用。在一幅航空图中,边表示航线,权值则表示距离或是费用。在这个情形中,最令人感兴趣的是将成本最小化。我们可以通过学习加权无向图模型并用算法回答下面这个问题。最小生成树,给定一幅加权无向图,找到它的一棵最小生成树。定义:图的生成树是它的一棵含有其所有顶点的无环连通子图,一幅加权无向图的最小生成树(MST)是它原创 2017-08-27 21:42:06 · 347 阅读 · 0 评论 -
第四章 4.2 有向图
在有向图中,边是单向的:每条边所连接的两个顶点都是一个有序对,它们的邻接性是单向的。许多应用(网络、任务调度条件或是电话的图)都是天然的有向图。应用顶点边食物链物种捕食关系互联网连接网页超链接程序模块外部引用手机电话呼叫原创 2017-08-27 21:41:18 · 818 阅读 · 0 评论 -
第四章 4.1无向图
在计算机应用中,由相连的结点所表示的模型起到了关键的作用。关键疑问:示沿着这些连接能否从一个结点到另一个结点?有多少结点和指定的结点相连??两个结点之间最短的连接是哪一条?????图的应用 地图(那条路线最快)、网页信息(整个互联网就是一张图,结点是网页,连接就是超链接,算法是帮助我们在网络上定位信息的搜索引擎的关键组件)、电路(各种元件的组合成一块)、任务调度(商品的原创 2017-08-27 21:40:42 · 523 阅读 · 0 评论 -
第三章 3.4 散列表
如果所有的键都是小整数,我们可以用一个数组来实现无序的符号表,将键作为数组的索引而数组中键i处储存的就是它对应的值,这样我们就可以快速访问任意键的值。对于此节中学习散列表,它这种简易方法的扩展并能够处理更加复杂的类型的键。我们用算法操作将键转化为数组的索引来访问数组中的键值对。 使用散列的查找算法分为两步:用散列函数将被查找的键转化为数组的索引,理想状态下,不同的键都能转化原创 2017-08-27 21:39:38 · 179 阅读 · 0 评论 -
第三章 3.3平衡二叉树
在本节中,我们会介绍一种二分查找树并能保证无论如何构造它,它的运行时间都是对数级别的。在理想情况下,我们希望能保持二分查找树的平衡性。在一棵含有N个结点的树中,我们希望树的高位~lgN,这样我们能保证所有查找都能在~lgN次比较内结束,就像二分查找一样。 3.3.1 2-3 查找树 定义一棵2 3 查找树或为一棵空树,有以下结点组成:2-结点,含有原创 2017-08-27 21:38:47 · 234 阅读 · 0 评论 -
第三章 3.2二叉查找树
在本节中,我们将学习一种能够将链表插入的灵活性和有序数组查找的高效性结合起来的符号表实现。具体来说,就是使用每个结点含有两个链接(链表中每个结点只含有一个链接)的二叉查找树来高效地实现符号表。 结构术语:我们所使用的的数据结构有结点组成,结点包含的链接只能有一个父结点指向自己,而且每个结点都只有左右两个链接。分别指向自己的左子结点和右子结点。英雌将二叉树定义为一个空连接,或者是一个有原创 2017-08-27 21:38:05 · 189 阅读 · 0 评论 -
第一章 1.2数据抽象
第一章 1.2 数据抽象 数据类型指的是一组值和一组对这些值操作的集合。对于原始数据类型,如int 则取值范围是-2^31 到2^31-1之间的整数,int的操作包括+、*、-、/、%、。我们也可以在更高的层次的抽象上编写程序,对于重点学习定义和使用数据类型,这个过程也被称为数据抽象。 要开发出给定数据类型的用例,我们需要:声原创 2017-08-23 15:25:59 · 259 阅读 · 0 评论 -
第二章 2.3 快速排序
本节的主题是快速排序,他可能是应用广泛的排序算法了。优点:实现简单、适用于各种不同的输入数据且在一般应用中比其他排序算法都要快得多。它是原地排序,且将长度为N 的数组所需的时间和NlgN成正比。缺点:非常脆弱,在实现时要非常小心才能避免低劣的性能。与归并排序的比较快速排序与归并排序是互补的:归并排序将数组分成两个子数组分别排序,并将有序的子数组归并并以整个数组排原创 2017-08-23 15:30:29 · 181 阅读 · 0 评论 -
第二章 2.2归并排序
定义人们根据将两个有序数组归并成一个更大的有序数组。根据此操作发明了简单的递归排序算法:归并排序。优点:能够保证将任意长度为N的数组排序所需时间和NlogN成正比;缺点:所需的额外空间和N成正比。原地归并的抽象方法创建一个适当大小的数组然后将两个输入数组中的元素一个个从小到大放入这个数组中。注意:这两个数组要个数一样,并且要都是有序的原创 2017-08-23 15:29:49 · 245 阅读 · 0 评论 -
第三章 3.1 符号表
我们会使用符号表这个词来描述一张抽象的表格,我们会将信息存储在其中,然后按照指定的键来搜索并获取这些信息。键和值得具体意义取决于不同的应用,符号表中可能保存很多键和信息, 符号表有时称为字典,符号表有时又称为索引,我们会学习三种经典的数据类型来实现高效的符号表:二叉查找树、红黑树和散列表。3.1 符号表 符号表的目的就是将一个键和一个值联系起来。用原创 2017-08-23 15:32:56 · 416 阅读 · 0 评论