- 博客(14)
- 收藏
- 关注
原创 数据结构(图 Graph)探索图的奥秘:广度优先与深度优先策略
图的历史Leonhard Euler 于1736 年发表的关于柯尼斯堡七桥 (opens new window)的论文被认为是图论史上的第一篇论文。这篇论文,以及范德蒙德写的关于骑士问题的论文,都是在莱布尼茨发起的分析位置上进行的。欧拉公式涉及凸多面体的边数、顶点数和面数,由 Cauchy 和L'Huilier 研究和推广,它代表了称为拓扑的数学分支的开始。1860 年和 1930 年拓扑学的自主发展通过 Jordan、Kuratowski 和 Whitney 的著作使图论得以发展。图论和。
2024-09-12 16:38:31
807
原创 数据结构(并查集) How did you do it? 怎么做到的!!!
并查集的历史1964年, Bernard A. Galler 和 Michael J. Fischer 首次描述了不相交的并查集,1975 年,Robert Tarjan 是第一个证明O(ma(n))()算法时间复杂度的上限,并且在 1979 年表明这是受限情况的下限。2007 年,Sylvain Conchon 和 Jean-Christophe Filliâtre 开发并查集数据结构的半持久版本,并使用证明助手 Coq 将其正确性形式化。
2024-09-10 11:30:16
926
原创 数据结构(红黑树)你知道为什么HashMap用红黑树嘛?懂?
红黑树的历史红黑树(Red Black Tree)是一种自平衡二叉查找树,于 1972 年由 Rudolf Bayer 发明的对称二叉B树演化而来,并以2-3-4树、2-3树流行。最终在 1978 年由 Leonidas J. Guibas 和 Robert Sedgewick 从对称二叉 B 树中推导出红黑树。PS:之所以选择“红色”,是因为它是作者在Xerox PARC工作时可用的彩色激光打印机产生的最好看的颜色。
2024-08-28 10:25:25
1255
原创 数据结构(2-3树)有脑子的都会了,没脑子的呢?
/ 元素// 序号// 孩子// 父亲【非必须】--idx;// ... 省略部分代码2-3树的几点元素需要包括;一个数组的元素集合、元素的序号、孩子元素。因为一个节点最多可临时放入3个元素,那么就会最多有4个孩子元素,所以孩子元素也是一个数组并且在构造函数中按照4个元素进行初始化。由于本身2-3树插入元素的开始阶段,并不是直接创建一个新的节点,而是在初始化的数组空间中存入元素。所以在节点中提供了一个插入元素的方法 insert 来处理新增元素。
2024-08-27 14:53:31
1333
原创 数据结构(AVL树)啥树?自平衡?你懂吗?看这个就懂了
在计算机科学中,AVL 树以其两位苏联发明家Georgy Adelson-Velsky和 Evgenii Landis的名字命名,他们在 1962 年的论文“信息组织算法”中发表了它。它是一种自平衡二叉搜索树(BST),这是发明的第一个这样的数据结构。
2024-08-26 10:45:26
1267
原创 数据结构(二叉树)最基础的树结构,你懂吗?
Binary Search Tree历史二叉搜索树算法是由包括 PF Windley、Andrew Donald Booth、Andrew Colin、Thomas N. Hibbard 在内的几位研究人员独立发现的。该算法归功于 Conway Berners-Lee 和 David Wheeler ,他们在 1960 年使用它在磁带中存储标记数据。最早和流行的二叉搜索树算法之一是 Hibbard 算法。用于组成一颗树的节点,则需要包括;值和与之关联的三角结构,一个父节点、两个孩子节点。
2024-08-21 11:14:17
754
原创 数据结构(字典树)学傻了给我,字典树!啥!
Trie 的历史字典树 Trie 这个词来自于 retrieval,于 1912 年,Axel Thue 首次抽象地描述了一组字符串数据结构的存放方式为 Trie 的想法。这个想法于 1960 年由 Edward Fredkin 独立描述,并创造了 Trie 一词。你看看,多少程序员为了一个词、方法名、属性名,想破脑袋!
2024-08-21 10:03:28
1015
原创 数据结构(堆,你懂不?轻松拿下)
堆的历史堆的数据结构有很多种体现形式,包括;2-3堆B堆斐波那契堆,而在 Java API 中最常用的是用于实现优先队列的二叉堆,它是由 JWJ Williams 在 1964 年引入的,作为堆排序算法的数据结构。另外在 Dijkstra 算法等几种高效的图算法中,堆也是非常重要的。堆的实现在 Java API 中主要体现在延迟队列的实现二叉堆上,这里小傅哥单独把这部分代码拆分出来,了解下关于小堆和大堆的实现。从对堆的数据结构介绍上可以看到,小堆和大堆的唯一区别仅是对元素的排序方式不同。
2024-08-19 10:53:43
750
原创 数据结构:学哈希散列表?看这个就够了
哈希表的历史哈希散列的想法在不同的地方独立出现。1953 年 1 月,汉斯·彼得·卢恩 ( Hans Peter Luhn ) 编写了一份IBM内部备忘录,其中使用了散列和链接。开放寻址后来由 AD Linh 在 Luhn 的论文上提出。大约在同一时间,IBM Research的Gene Amdahl、Elaine M. McGraw、Nathaniel Rochester和Arthur Samuel为IBM 701汇编器实现了散列。
2024-08-09 11:18:27
1069
原创 数据结构(堆栈 堆)
堆栈的历史堆栈于 1946 年进入计算机科学文献,当时当时 Alan M. Turing 使用术语“bury”和“unbury”作为调用子程序和从子程序返回的一种方式。1945 年, Konrad Zuse 的 Z4 中已经实现了子程序。慕尼黑工业大学的 Klaus Samelson 和 Friedrich L. Bauer 在 1955 年提出了堆栈的想法,并于 1957 年申请了专利。1988 年 3 月,其中在萨梅尔森去世时,鲍尔因发明堆栈原理而获得了 IEEE 计算机先锋奖。
2024-08-09 10:51:11
1087
原创 数据结构(队列)
什么是队列?在计算机科学中,队列(queue)是一种特殊类型的抽象数据类型或集合(可以用链表实现,也可以用数组实现)。集合中的实体对象按顺序保存,可以通过在序列的一端添加实体和从序列的另一端移除实体来进行修改。将元素添加到队列后的操作称为入队,从队列中移除元素的操作称为出队。也允许其他的一些操作,包括 peek、element等。另外队列还分为单端队列(queue)和双端队列(deque),这在本章节要实现的优先队列中会有所体现。队列的数据结构更像是数组和链表的变种,只要能看懂数组和链表,就能看懂队列。
2024-08-08 15:36:52
959
原创 数据结构(数组)
数组是数据结构还是数据类型?数组只是个名称,它可以描述一组操作,也可以命名这组操作。数组的数据操作,是通过 idx->val 的方式来处理。它不是具体要求内存上要存储着连续的数据才叫数组,而是说,通过连续的索引 idx,也可以线性访问相邻的数据。那么当你定义了数据的存储方式,也就定义了数据结构。所以它也是被归类为数据结构。
2024-08-08 10:54:52
1127
原创 数据结构学习(链表)
链表的新增和删除的时间复杂度是O(1)的,所以在大量的这些操作中使用链表是最好的选择比如当我需要过滤规则的时候使用链表比较合适,设计模式也有提到比如责任链。
2024-08-08 10:06:33
850
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人