- 博客(9)
- 收藏
- 关注
原创 合并排序
合并排序据说也是32个经典算法之一。三个经典排序:快速排序、堆排序、合并排序,时间复杂度都是O(nlgn),但还是有很大区别的。可以参考这个:快排、堆排、并排合并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干
2015-04-04 09:46:22 498
原创 堆排序
32个经典算法之一。堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。PS:树是图的子集,堆是树的一种形态。(1)用大根堆排序的基本思想:① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区② 再将关键字最大的记录R
2015-04-03 17:41:49 517
原创 Kruskal算法
求加权连通图的最小生成树的算法。和Prim算法对应,经典算法。算法步骤:假设 WN=(V,{E}) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含 n 个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有 n 棵树的一个森林。之后,从网的边集 E 中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子
2015-04-02 22:22:43 336
原创 Best-First-Search算法
缩写起来是跟广度优先搜索一样的BFS,实际上不同。此BFS按照类似Dijkstra的流程运行,不同的是它能够评估任意结点到目标点的代价。与选择离初始结点最近的结点不同的是,它选择离目标最近的结点。BFS不能保证找到一条最短路径。然而,它比Dijkstra算法快的多,因为它用了一个启发式函数(heuristic function)快速地导向目标结点。看看维基百科的解释:Best-Firs
2015-04-02 16:03:20 9585
原创 Dijkstra算法
经典不解释。Dijkstra算法从物体所在的初始点开始,访问图中的结点。它迭代检查待检查结点集中的结点,并把和该结点最靠近的尚未检查的结点加入待检查结点集。该结点集从初始结点向外扩展,直到到达目标结点。Dijkstra算法保证能找到一条从初始点到目标点的最短路径,只要所有的边都有一个非负的代价值。算法步骤:G={V,E}1. 初始时令 S={V0},T=V-S={其
2015-04-02 15:47:09 500
原创 集束搜索
看计算机科学中最重要的32个算法,其中有个是集束搜索(又名定向搜索,Beam Search)——最佳优先搜索算法的优化。使用启发式函数评估它检查的每个节点的能力。不过,集束搜索只能在每个深度中发现前m个最符合条件的节点,m是固定数字——集束的宽度。泛泛的介绍,不是很能理解清楚,于是有百度又google,写篇东西备忘。先贴维基百科的地址:Beam Search翻译过来就是:Beam Se
2015-04-01 19:18:25 2382
原创 Struts2 + Spring + Hibernate 入门 2
继上一节《Struts2 + Spring + Hibernate 入门1》了解SSH的使用领域和意义后,接下来搭建一个SSH框架项目来观察各个部件的运行原理。一、搞个helloworld推荐用eclipse加插件方式来解决,可以参考这个例子:Eclipse搭建SSH(Struts2+Spring3+Hibernate3)框架项目教程整合三个框架的过程难
2015-03-31 19:45:40 408
原创 Struts2 + Spring + Hibernate 入门 1
用工具之前先了解工具,SSH不是一个框架的三部分,而是三个不同框架集成使用,它们既可以单独使用,也可以与其他工具进行搭配,三者之间比较好的遵循了设计模式里的“高内聚低耦合”原则,学习和使用比较方便,尤其是利于快速开发web应用程序,构建灵活、易于扩展,目前比较流行。
2015-03-31 17:16:11 518
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人