• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

dream311

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

随笔分类 -  算法java实现

1 2 下一页

二十二、动态规划
摘要:动态规划(dynamic programming)与分治方法类似,都是通过组合子问题的解来求解原问题。分治方法将问题划分为互不相交的子问题,递归的求解子问题,再将它们的解组合起来,求出原问题的解。与之相反,动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题(子问题的求解是递归进行的,将 阅读全文

posted @ 2015-12-10 21:38 dream311

二十一、所有结点对最短路径问题(弗洛伊德算法)
摘要:弗洛伊德算法介绍 和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。 基本思想 通过Floyd计算图G=(V,E)中各个顶点的最短路径时,需要引入一 阅读全文

posted @ 2015-12-08 17:25 dream311

二十、单源最短路径(迪杰斯特拉算法)
摘要:迪杰斯特拉算法介绍 单源最短路径:源结点s到其它每个结点v的最短路径。 最短路径不一定是唯一的,最短路径树也不一定是唯一的。 普利姆算法与迪杰斯特拉算法区别:普利姆算法中的lowcost[]记录剩下顶点到最小生成树的最短距离。迪杰斯特拉算法中的dist[]记录剩下顶点到源顶点s的最短距离 迪杰斯特拉 阅读全文

posted @ 2015-12-08 14:19 dream311

十九、最小生成树(普里姆算法)
摘要:普里姆算法介绍 普里姆(Prim)算法,是用来求加权连通图的最小生成树的算法。 基本思想 对于图G而言,V是所有顶点的集合;现在,设置两个新的集合U和T,其中U用于存放G的最小生成树中的顶点,T存放G的最小生成树中的边。 从所有uЄU,vЄ(V-U) (V-U表示出去U的所有顶点)的边中选取权值最小 阅读全文

posted @ 2015-12-07 22:11 dream311

十八、最小生成树(克鲁斯卡尔算法)
摘要:最小生成树 在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。 例如,对于如上图G4所示的连通网可以有多棵权值总和不相同的生成树。 克鲁斯卡尔算法介绍 克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成 阅读全文

posted @ 2015-12-07 11:40 dream311

十七、拓扑排序
摘要:拓扑排序介绍 拓扑排序(Topological Order)是指,将一个有向无环图(Directed Acyclic Graph简称DAG)进行排序进而得到一个有序的线性序列。 这样说,可能理解起来比较抽象。下面通过简单的例子进行说明! 例如,一个项目包括A、B、C、D四个子部分来完成,并且A依赖于 阅读全文

posted @ 2015-12-07 11:34 dream311

十六、图的遍历(深度,广度)
摘要:1. 深度优先搜索介绍 图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。 它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此 阅读全文

posted @ 2015-12-05 12:58 dream311

十五、图的理论基础
摘要:图的基本概念 1. 图的定义 定义:图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的;其中,点通常被成为"顶点(vertex)",而点与点之间的连线则被成为"边或弧"(edege)。通常记为,G=(V,E)。 2. 图的种类 根据边是否有方向,将图可以划分为:无向图和 阅读全文

posted @ 2015-12-04 17:08 dream311

十四、堆
摘要:优先级队列是一个抽象数据类型(ADT),它提供了删除最大(或最小)关键字值的数据项的方法,插入数据项的方法,有时还有一些其他操作的方法。配合不同的ADT,优先级队列可以用不同的内部结构来实现。优先级队列可以用有序数组来实现,但是这种作法的问题是,尽管删除最大数据项的时间复杂度为O(1),但是插入还是 阅读全文

posted @ 2015-12-03 16:54 dream311

十三、哈希表
摘要:哈希表是一种数据结构,它可以提供快速的插入操作和查找操作,不论哈希表中有多少数据,插入和删除只需要接近常量的时间,即O(1)的时间级。 哈希表的缺点:它是基于数组的,数组创建后难于扩展。某些哈希表被基本填满时,性能下降得非常严重,所以程序员必须要清楚表中将要存储多少数据(或者准备好定期地把数据转移到 阅读全文

posted @ 2015-12-02 14:29 dream311

十二、234树
摘要:在二叉树中,每个节点有一个数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树。2-3-4树就是多叉树,它的每个节点最多有四个子节点和三个数据项。 2-3-4树和红黑树一样是平衡树。它的效率比红黑树稍差,但编程容易。通过2-3-4树可以更容易地理解B-树。 B-树是 阅读全文

posted @ 2015-11-29 23:20 dream311

十一、红黑树
摘要:普通的二叉搜索树作为数据存储工具有重要的优势:可以快速地找到一个给定关键字的数据项,并且可以快速地插入和删除数据项。其他的数据存储结构,例如数组、有序数组以及链表,执行这些操作却很慢。因此,二叉搜索树似乎是理想的数据存储结构。 如果树中插入的是随机数据,则执行效果很好。但是,如果插入的是有序的数据或 阅读全文

posted @ 2015-11-27 16:07 dream311

十、哈夫曼编码
摘要:计算机里每个字符在没有压缩的文本文件中由一个字节(如常见的ASCII码)或两个字节(如Unicode)表示。这些方案中,每个字符需要相同的位数。有很多的数据压缩的方法。对文本来说,最常用的方法是减少表示最常用字符的位数量。但有个规则:每个代码都不能是其他代码的前缀。使用哈夫曼编码可以满足条件。 创建 阅读全文

posted @ 2015-11-27 13:47 dream311

九、二叉树
摘要:树通常结合了另外两种数据结构的优点:一种是有序数组,另一种是链表。在树中查找数据项的速度和在有序数组中查找一样快,并且插入数据项和删除数据项的速度也和链表一样。 1、二叉搜索树:一个节点的左子节点的关键字值小于这个节点,右子节点的关键字值大于或等于这个父节点。 阅读全文

posted @ 2015-11-25 21:17 dream311

八、高级排序
摘要:冒泡排序,选择排序,插入排序容易实现,但速度比较慢。归并排序速度比简单排序要快,但需要的空间是原始数组空间的两倍。 1、希尔排序 希尔排序是基于插入排序的。插入排序带来的问题,假设一个很小的数据项在很靠近右端的位置上,这里本来应该是值比较大的数据项躲在的位置。把这个小数据项移动到在左边的正确位置上, 阅读全文

posted @ 2015-11-24 20:25 dream311

七、递归
摘要:1、三角数字 2、全排列 doAnagram(10):对于10个字符串的数组,选择第一个字符后,对后面的9个字符doAnagram(9),数组中字符再左移一个单位,再对后面的9个字符doAnagram(9)。也就是doAnagram(10)分为10个doAnagram(9),1个doAnagram( 阅读全文

posted @ 2015-11-24 10:36 dream311

六、链表
摘要:1、链表的增删查 2、双端队列 链表有两个指针first和last,一个指向头节点,一个指向尾节点。 3、有序链表 4、使用有序链表对数组排序 5、双向双端链表 6、迭代器 阅读全文

posted @ 2015-11-21 12:37 dream311

五、优先级队列
摘要:1、优先级队列(数组实现) 优先级队列是比栈和队列更专用的数据结构,优先级队列中数据项的值有序,优先级队列有一个队头和一个队尾,并且也是从队列头移除数据项。不过在优先级队列中,数据项按关键字的值有序,这样关键字最小数据项(或者在某些实现中是关键字最大的数据项)总在队头。数据项插入的时候会按照顺序插入 阅读全文

posted @ 2015-11-20 12:06 dream311

四、队列
摘要:1、循环队列操作(数组实现) 2、队列的链表实现 阅读全文

posted @ 2015-11-20 11:16 dream311

三、栈
摘要:1、字符串的反转 2、括号匹配 3、算式中缀转后缀 input为中缀表达式,output为后缀表达式 栈中会保存+-*/(,栈底优先级低,栈顶优先级高(不包括括号),在括号内栈底优先级低,栈顶优先级高 遍历input,取某个值i。 i为数字时,直接添加到ouput中。 i为'('时,直接将i pus 阅读全文

posted @ 2015-11-20 10:25 dream311

1 2 下一页
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3