2014.07.04 18:24简介: 给定一个有向图,你可以认为每条边长度都是1(所以叫无权值)。下面的算法可以求出从特定的起点到终点的最短路径长度。描述: 从起点出发,根据当前顶点出发的边进行广度优先搜索,直至找到终点即可。如果搜索结束了仍然没有找到终点,那么起点无法到达终点。实现: 1 /.....
分类:
编程语言 时间:
2014-07-06 19:15:17
阅读次数:
255
2014.07.04 17:23简介: 我们考虑一种特殊的图: 1.有向图 2. 只有一个连通分量 3. 不存在环 那么这样的图里,必然可以找到一种排序方式,来确定谁在谁的“前面”。 简单的来说可以这么理解:如果存在一条边a->b,那么a顶点就在b的前面。 下面我们通过例子...
分类:
编程语言 时间:
2014-07-06 18:55:10
阅读次数:
183
在我的博文关于递归的一些简单想法,我用自己的理解谈了一些关于递归的看法,下面用 《数据结构与算法分析——C语言描述》 一书中第
9 页的四条基本原则将我的思想加以规范化,并在后续的不断加强学习中不断完善本文的内容。
在编写递归程序的时候,要牢记递归的四条基本原则:
基准情形:必须总有某些基准情形,它无需递归就能解出 —— 构成递归终止条件
不断推进:对于那些需要递归求解的情形...
分类:
其他好文 时间:
2014-07-01 11:05:18
阅读次数:
169
对于 《数据结构与算法分析——C语言描述》 一书第
20 页所描述的算法 3,相信会有很多人表示不怎么理解,下面我由具体问题的求解过程出发,谈谈我自己的理解:
首先,什么是分治法呢?所谓 分治法,就是 将一个问题的求解过程分解为两个大小相等的子问题进行求解,如果分解后的子问题本身也可以分解的话,则将这个分解的过程进行下去,直至最后得到的子问题不能再分解为止,最后将子问题的解逐步合并并可能...
分类:
其他好文 时间:
2014-07-01 11:03:52
阅读次数:
169
由于之前面试android的时候考到了很多关于java的知识,所以这次重温数据结构知识就打算用java来学习,毕竟android是以java为基础的,而且我现在学习的j2ee架构也是以java为基础的。java中的类就是对现实世界的对象的一种抽象,例如人就是一个类别,人有名字,联系电话,住址等成员属...
分类:
编程语言 时间:
2014-07-01 10:28:09
阅读次数:
210
2014.06.18 14:16简介: “并查集”,英文名为“union-find set”,从名字就能看出来它支持合并与查找功能。另外还有一个名字叫“disjoint set”,中文名叫不相交集合。可能我们倾向于用最短的名字,所以就出现了“并查集”翻译为“disjoint set”的情况。并查集....
分类:
编程语言 时间:
2014-06-28 19:55:37
阅读次数:
331
#include#includetypedef char* ElementType;typedef unsigned int Index;#define MinTableSize 15struct ListNode;typedef struct ListNode *Position;struct H...
分类:
其他好文 时间:
2014-06-26 18:04:01
阅读次数:
155
#include#include"fatal.h"typedef char* ElementType;typedef unsigned int Index;typedef Index Position;struct HashTbl;typedef struct HashTbl *HashTable;...
分类:
其他好文 时间:
2014-06-26 17:19:52
阅读次数:
150
2014.06.17 06:42简介: 基数排序是一种非比较算法,通过多轮的分配与合并来排序整个数组。应用范围比较窄,根据Wikipedia的说法,它只适合整数排序。描述: 基数排序和桶排序有点类似,都是将元素按照特定依据分配到多个桶中。但它和桶排序的区别,在于它要进行不止一次的分配与合并。每次.....
分类:
编程语言 时间:
2014-06-17 21:27:20
阅读次数:
392
最简单的不相交集的实现,来自MAW的《数据结构与算法分析》。代码:class DisjSet: def __init__(self, NumSets): self.S = [0 for i in range(NumSets+1)] def SetUnion(self, S,...
分类:
编程语言 时间:
2014-06-17 15:17:56
阅读次数:
265