上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页
摘要: 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 归并排序中,我们会先找到一个 阅读全文
posted @ 2018-05-01 23:30 Booker808 阅读(1272) 评论(0) 推荐(0) 编辑
摘要: 一、二叉堆的定义 堆树的定义如下: (1)堆是必须是一颗完全二叉树; (2)堆中某个节点的值总是大于或者小于子节点的值; (3)堆中每个非终端节点都可以看做是一个堆的根节点。 当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆。 当父节点的键值总是小于或等于任何一个子节点的键值时为最小堆。如 阅读全文
posted @ 2018-05-01 23:29 Booker808 阅读(646) 评论(0) 推荐(0) 编辑
摘要: 1 线段树的定义 首先,线段树是一棵二叉树。它的特点是:每个结点表示的是一个线段,或者说是一个区间。事实上,一棵线段树的根结点表示的是“整体”区间,而它的左右子树也是一棵线段树,分别表示区间的左半边和右半边。树中的每个结点表示一个区间[a,b]。每一个叶子结点表示一个单位区间。对于每一个非叶结点所表 阅读全文
posted @ 2018-04-30 01:48 Booker808 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。 如图: 阅读全文
posted @ 2018-04-22 22:22 Booker808 阅读(587) 评论(0) 推荐(0) 编辑
摘要: public class MyHashMap { private class Entry { int hash; K key; V value; Entry next; Entry(int hash, K key, V value, Entry next) { this.hash = hash; this.key = key; this.value = ... 阅读全文
posted @ 2018-04-22 12:32 Booker808 阅读(274) 评论(0) 推荐(0) 编辑
摘要: Java实现二叉树的前序、中序、后序、层序遍历(非递归方法) 实现Java中非递归实现二叉树的前序、中序、后序、层序遍历,在非递归实现中,借助了栈来帮助实现遍历。前序和中序比较类似,也简单一些,但是后序遍历稍微复杂一些,层序遍历中借助了一个队列来进行实现。 根据上面二叉树的形状来看,四种遍历后的结果 阅读全文
posted @ 2018-04-21 02:51 Booker808 阅读(384) 评论(2) 推荐(0) 编辑
摘要: 问题描述 假设有 1 元,3 元,5 元的硬币若干(无限),现在需要凑出 11 元,问如何组合才能使硬币的数量最少? 问题分析 乍看之下,我们简单的运用一下心算就能解出需要 2 个 5 元和 1 个 1 元的解。当然这里只是列出了这个问题比较简单的情况。当硬币的币制或者种类变化,并且需要凑出的总价值 阅读全文
posted @ 2018-04-21 00:10 Booker808 阅读(529) 评论(0) 推荐(0) 编辑
摘要: 一、堆的概念 堆是一棵顺序存储的完全二叉树。完全二叉树中所有非终端节点的值均不大于(或不小于)其左、右孩子节点的值。 其中每个节点的值小于等于其左、右孩子的值,这样的堆称为小根堆; 其中每个节点的值大于等于其左、右孩子的值,这样的堆称为大根堆; 二、算法过程 1.将数组构造成初始堆(若想升序则建立大 阅读全文
posted @ 2018-04-15 22:18 Booker808 阅读(430) 评论(0) 推荐(0) 编辑
摘要: 深度优先(DFS) 深度优先遍历,从初始访问结点出发,我们知道初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点。总结起来可以这样说:每次都在访问完当前结点后首先访问当前结点的第一个邻接结点。 我们从这里可以 阅读全文
posted @ 2018-04-14 02:53 Booker808 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 转载:http://www.cnblogs.com/skywang12345/ 迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。 基本思想 通过Dijk 阅读全文
posted @ 2018-04-14 02:52 Booker808 阅读(915) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页