数据结构与算法(Java)
文章平均质量分 92
数据结构与算法(Java)
Survivior_Y
愿为夜幕暗室的一粒灯火,照彻万里尘埃千百年
展开
-
Java 数据结构与算法之回溯法
一、概念回溯法是一种优选搜索法,按照优先条件深度优先搜索,以达到目标。当搜索到某一步时,发现原先选择并不是最优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术成为回溯法,而满足回溯条件的某个状态成为“回溯点”二、思想回溯法是从初始状态出发,按照深度优先搜索的方式,根据产生子节点的条件约束,搜索问题的解。当发现当前节点不满足条件时,就回溯,尝试其他的路径。回溯法是一种“能进则...原创 2020-02-23 15:59:41 · 429 阅读 · 0 评论 -
Java 数据结构与算法之动态规划
序《Dynamic Programming》中的“Programming”不是编程的意思,而是指一种表格处理法,DP把每一步得到的子问题结果存储在表格里,每次遇到该子问题时不需要再求解一遍,只需要查询表格即可。一、概念动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干...原创 2020-02-23 15:19:41 · 230 阅读 · 0 评论 -
Java 数据结构与算法之贪心
序 一个贪心算法总是做出当前最好的选择,也就是说,它期望通过局部最优选择从而得到全局最优的解决方案——《算法导论》一、概念二、贪心思想从问题的某一初始解出发:while (朝给定总目标前进一步){利用可行的决策,求出可行解的一个解元素。}由所有解元素组合成问题的一个可行解;三、适用范围优缺点等四、场景示例...原创 2020-02-15 11:45:39 · 239 阅读 · 0 评论 -
Java 数据结构与算法之链表
序作为一种基本数据结构,链表(Linked List)是一种物理存储单元上非连续的存储结构,元素的逻辑顺序是通过链表的指针来实现的。这种存储方式使链表具备插入数据复杂度 O(1) 查找复杂度 O(n) 的特性。链表一般分为三种:单向链表、双向链表、循环链表。一、单向链表单向链表是一种线性表,由节点(ListNode)组成,节点是由存储的对象(object)以及对下一个节点的引用(nex...原创 2020-02-08 15:36:22 · 226 阅读 · 0 评论 -
Java 数据结构与算法之DFS、BFS
在使用BFS和DFS遍历图的时候,一般都会维护一个set或者visit数组,标记被访问过的节点,在遍历时需要判断是否被访问过一、DFS(深度优先遍历)DFS采用递归和栈,从起点顶点开始,递归访问其所有邻近节点。Step1:下图 DFS(1) 访问节点1,Visited标注为T,以1为顶点,准备访问1的邻近节点0Step2:下图 DFS(0) 访问节点0,Visited标注为T,...原创 2020-02-07 22:46:20 · 754 阅读 · 0 评论 -
Java 数据结构与算法之堆
一、堆堆是一种基本的数据结构,本质是一棵完全二叉树。堆分为最大堆和最小堆。堆常用于构建优先队列,堆排序,哈夫曼树/编码等。最大堆:父节点的值比所有子节点的值都要大或者相等 最小堆:父节点的值比所有子节点的值都要小或者相等(如下图)如上图所示,堆的底层数据结构通常采用数组来存储1、插入以最小堆为例,插入后依然保持最小堆的特性,首先针对下面的最小堆,插入数据1数据...原创 2020-02-06 20:54:53 · 183 阅读 · 0 评论 -
Java 数据结构与算法之二叉树
一、树的概念1、树的概念:树,作为非线性数据结构的典型例子,不再是一对一,而是一对多的关系。示例图如下根节点(root) :最顶部节点,唯一的 父节点和子节点:parent,child是相对的 子节点:每个子节点只有一个父节点 叶子节点:没有子节点的节点称为叶子节点(leaf)2、树的相关术语:示意图如下节点的度:该节点的子节点个数,8的度为2 树的度:这棵树内子节点...原创 2020-02-05 22:39:08 · 372 阅读 · 0 评论