数据结构
文章平均质量分 85
wesker1121
纵使困顿难行,亦当砥砺奋进
展开
-
哈尔滨工业大学 数据结构期末总复习(三)
目录结构是在课堂整理的,重复之处略。原创 2023-11-21 21:13:25 · 240 阅读 · 1 评论 -
哈尔滨工业大学 数据结构期末总复习(二)
在带权的有向图中,用顶点表示事件,边表示活动,权表示活动的持续时间。每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。由于活动只有一个开始点和一个结束点,所以在正常情况下,AOE网只有一个入度为0的点,称为起始点(源点);一个出度为0的点,称为结束点(汇点)。原创 2023-11-19 23:05:03 · 375 阅读 · 0 评论 -
哈尔滨工业大学 数据结构期末总复习(一)
next[]数组存储的是模式串中每个前缀子串(例如本例子中就是:A,AB,ABA,ABAB,ABABC)前n位和后n位相同的情况,例如:next[]如何使用:例如在第一轮匹配中, 我们发现模式串的第5位不匹配,那么我们只需要查询。原创 2023-11-19 09:43:51 · 433 阅读 · 0 评论 -
cs61b 数据结构与算法笔记 15 Tries(字典树)
理论上快于哈希表(hashTable)和搜索树(searchTree)将字母映射成节点。三个选择:DataIndexedCharMap 数组存放所有可能出现的子节点的链接Bushy BSTHash Table三个方法都很好。hashTable感觉最自然。支持特殊的字符串操作如longestPrefixOf(最长前缀匹配)和keysWithPrefix(查找含有目标字段的字符串)。AutoComplete的实现可以运用KeysWithPrefix。原创 2023-10-18 18:37:48 · 133 阅读 · 0 评论 -
CS61B 数据结构与算法笔记 20 最小生成树
给定一个无向图,寻找它是否有一个环。方法1:从某个节点开始做深度优先搜索。方法2:用对于每一条边,检查两端点是否相连。例如4-5,5-6,6-4,将4-5,5-6union后,4和6就被连接,遍历到6-4边的时候发现已经连接,说明图中有环。原创 2023-10-05 14:52:05 · 170 阅读 · 0 评论 -
CS61B 19 最短路:Dijkstra与A*
它输入一个节点s,输出从s开始的最短路径树。1. 创建一个优先队列priority queue2. 将s以优先级0加入到优先队列中。将所有其他节点以优先级∞加入到优先队列中。3. 当优先队列不是空的:将一个节点弹出优先队列,然后释放(relax)所有以该点为起点的有向边。原创 2023-10-01 15:29:43 · 100 阅读 · 0 评论 -
CS61B 数据结构与算法笔记 17 遍历和图
1. 层序遍历:从上到下,从左到右。2. 深度优先遍历1. 先序Preorder,中序Inorder, 后序Postorder。2. 根本想法:先遍历深节点,后遍历浅节点。注意:遍历节点与访问节点不同。原创 2023-09-30 17:20:57 · 92 阅读 · 0 评论 -
CS61B 数据结构与算法笔记 堆和优先队列
所有数据结构都在做一件事:解决搜索问题。给定一个数据流,从中获取想要的信息。数据结构的实现1. Set和Map的区别:set只返回true/false值,而map返回具体信息。2.原创 2023-09-29 09:56:05 · 137 阅读 · 0 评论 -
cs61b数据结构与算法笔记 Project2 Gitlet
在java中,可以使用file构造函数创建file对象,并传入文件路径(相对路径)您可以将此 File 对象视为对实际文件 dummy.txt 的引用--当我们创建新的 File 对象时,我们实际上并没有创建 dummy.txt 文件本身,我们只是在说:"将来,当我对 f 执行操作时,我想对 dummy.txt 执行这些操作"。要实际创建这个 dummy.txt 文件,我们可以调用对于对文件的读写,我们有java.utils可以使用。例如将一个字符串HWorld写入文件f(即上文dummy.txt)。原创 2023-09-26 21:06:34 · 153 阅读 · 0 评论 -
cs61b数据结构与算法笔记 B树
BST的树高度:最佳情况Θ(log N), 最坏情况Θ(N)。BTree是在二项搜索树BST基础上的一种改版,避免了最坏情况Θ(N)。节点可能包含1到L个元素。其中包含的功能几乎与普通 BST 完全相同。add 的工作原理是向现有的叶节点添加项目。如果节点太满,它们就会分裂。BTree产生的树的平衡性非常好。操作的时间复杂度为O(log N)。B 树更为复杂,但能有效处理任何插入顺序。原创 2023-09-25 09:02:22 · 300 阅读 · 0 评论 -
cs61b数据结构与算法笔记 旋转树,红黑树
我们可以做的一件事就是创建一个 "胶水 "节点,它不包含任何信息,只是用来显示它的两个子节点实际上是一个节点的一部分。然而,这是一个非常不优雅的解决方案,因为我们会占用更多的空间,代码也会很难看,而且这样会使得树多出一个空链接(如图d节点右下方)。因此,我们。原创 2023-09-25 20:44:07 · 144 阅读 · 0 评论 -
cs61b数据结构与算法 12.Hashing
我们的 DataIndexedIntegerSet 只允许插入整数,但现在我们想插入字符串 "cat"。我们将把可以插入字符串的数据结构称为 DataIntexedEnglishWordSet。我们可以将小写英文字符串看成26进制的整数,并把它转化为十进制int,这样我们的ArrayList就可以存储小写英文字符串了。进一步拓展,我们使用ASCII码,每一个字符有一个在0(含)和127(含)之间的值。即相当于128进制整数。如果要包括中文等字符,就要用相应规则拓展,如unicode。原创 2023-09-26 18:59:09 · 87 阅读 · 0 评论 -
cs61b数据结构与算法笔记 10,11 二叉搜索树
树:两个节点之间只能有一条路。二叉搜索树里,我们让每个节点的左子节点小于该节点,右节点大于该节点。不能有大小完全相同的节点。原创 2023-09-23 18:40:05 · 136 阅读 · 1 评论 -
cs61b数据结构与算法学习笔记 9. DisjointSets(并查集)
直观地说,我们可以首先考虑将 "互不相交集 "表示为一个集列表,例如 List。例如,如果我们有 N=6 个元素,并且没有任何元素被连接,那么我们的集合列表看起来就像这样:[{0}, {1}, {2}, {3}, {4}, {5}, {6}].看起来不错。但是,考虑一下如何完成 connect(5, 6) 这样的操作。我们必须遍历多达 N 个集合才能找到 5,再遍历 N 个集合才能找到 6。我们的运行时间就变成了 O(N)。而且,如果要尝试实现这一点,代码会相当复杂。原创 2023-09-11 09:38:29 · 249 阅读 · 0 评论 -
cs61b笔记 7.2 Access Control 8. Efficient Programming
1. API很难设计,但是拥有连贯的设计理念可以使代码更简洁,更易于处理。2. 继承通常很容易使用,但是注意谨慎使用,只有当你确定类的属性时候才能用。原创 2023-09-09 20:49:04 · 110 阅读 · 1 评论 -
cs61b 8.2 渐进分析入门
我们可以用外部环境直接计算程序运行秒数。Unix有一个内置的time命令可以计算耗时。原创 2023-09-10 20:21:36 · 60 阅读 · 1 评论 -
cs61b笔记 7.1 Packages
1. 为了防止不同的人制作了相同名字的包,Pacakge的创建应该遵循以下命名规则:软件包名称以网站地址开头,倒序排列。原创 2023-09-07 14:04:46 · 61 阅读 · 1 评论 -
cs61b笔记 6.1-6.4
遍历集合的三种方法。原创 2023-09-06 21:45:17 · 70 阅读 · 1 评论 -
cs61b笔记 3.Testing
对于中高级程序员来说,最重要的技能之一就是判断代码是否正确的能力。在本章中,我们将讨论如何编写测试来评估代码的正确性。同时,我们还将讨论一种名为 "选择排序 "的排序算法。临时测试1. !=和==字符的滥用:只有两个数组都指向同一地址的时候,!=才返回true。如果是两个不同地址的完全相同的。2.为 Sort.sort 编写测试虽然繁琐,但相对简单。我们只需创建一个输入,调用 sort,然后检查该方法的输出是否正确。如果输出不正确,我们就打印出第一个不匹配项并终止测试。例如,我们可以创建一个如原创 2023-09-04 20:46:03 · 69 阅读 · 1 评论 -
cs61b笔记 Project1
自用。原创 2023-09-06 21:46:02 · 237 阅读 · 2 评论 -
CS 61B笔记 2. Lists
在2.1中,我们创建了IntList类,作为一种。尽管它能完成所要求的全部事情,但是结构不够好,还可以改进。尤其是IntList用的使代码很难理解。在2.2中我们将再写一个SLList类来改进IntList的不足之处。原创 2023-09-03 11:40:14 · 83 阅读 · 0 评论