数据结构与算法
文章平均质量分 87
涉及Java数据结构和Java算法的各个方面,包括数组、链表、递归、队列、栈、堆、二叉树、查找算法、排序算法、回溯、贪心、分治、动态规划等等。
梵高Coding
这个作者很懒,什么都没留下…
展开
-
数据结构与算法(6)查找算法
int key;// 若希望任意类型作为 key, 则后续可以将其设计为 Comparable 接口int t;int[] keys;this.t = t;@Overrideleaf 表示是否为叶子节点keyNumber 为 keys 中有效 key 数目t 为最小度数,它决定了节点中key 的最小、最大数目,分别是 t-1 和 2t-1keys 存储此节点的 keychildren 存储此节点的 child。原创 2023-12-30 12:01:10 · 917 阅读 · 0 评论 -
数据结构与算法(5)堆
对于前、中两种遍历,实际以上代码从右子树向回走时,并未走完全程(stack 提前出栈了)后序遍历以上代码是走完全程了。对于后序遍历,向回走时,需要处理完右子树才能 pop 出栈。以上用队列来层序遍历是针对 TreeNode 这种方式表示的二叉树。二叉树是这么一种树状结构:每个节点最多有两个孩子,左孩子和右孩子。对于数组表现的二叉树,则直接遍历数组即可,自然为层序遍历的顺序。以大顶堆为例,相对于之前的优先级队列,增加了堆化等方法。下面是一种统一的写法,依据后序遍历修改。表示没啥可处理的,可以出栈。原创 2023-12-04 14:33:47 · 865 阅读 · 0 评论 -
数据结构与算法(4)队列
双端队列、队列、栈对比定义特点队列一端删除(头)另一端添加(尾)栈一端删除和添加(顶)双端队列两端都可以删除、添加优先级队列优先级高者先出队延时队列根据延时时间确定优先级并发非阻塞队列队列空或满时不阻塞并发阻塞队列队列空时删除阻塞、队列满时添加阻塞Java 中 LinkedList 即为典型双端队列实现,不过它同时实现了 Queue 接口,也提供了栈的 push pop 等方法注2:不同语言,操作双端队列的方法命名有所不同,参见下表操作JavaJavaScript。原创 2023-12-04 11:08:34 · 765 阅读 · 0 评论 -
数据结构与算法(3)栈
计算机科学中,是一种线性的数据结构,只能在其一端添加数据和移除数据。习惯来说,这一端称之为,另一端不能操作数据的称之为,就如同生活中的一摞书先提供一个栈接口。原创 2023-12-04 10:19:56 · 397 阅读 · 0 评论 -
数据结构与算法(2)链表
定义计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集return;自己调用自己,如果说每个函数对应着一种解决方案,自己调用自己意味着解决方案是一样的(有规律的)每次调用,函数处理的数据会较上次缩减(子集),而且最后会缩减至无需继续递归内层函数调用(子集处理)完成,外层函数才能算调用完成原理假设链表中有 3 个节点,value 分别为 1,2,3,以上代码的执行流程就类似于下面的伪码return;思路确定能否使用递归求解。原创 2023-11-22 16:34:18 · 835 阅读 · 0 评论 -
数据结构与算法(1)数组
在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识因为数组内的元素是。原创 2023-11-22 16:12:15 · 845 阅读 · 0 评论