
算法/数据结构
文章平均质量分 69
落叶似秋
努力不一定成功,但不努力会后悔。
展开
-
Java删除文件夹下所有的文件和文件夹
把文件目录结构想成一棵树,用深度优先遍历算法去删除它们import java.io.File;public class Main { public static void main(String[] args) { // TODO Auto-generated method stub File f=new File("E:/新建文件夹"); deleteFile(f);原创 2016-06-01 11:44:52 · 761 阅读 · 0 评论 -
广度优先搜索解决八数码问题
求解八数码要懂得的知识1.康托展开,八数码在交换的过程中状态会改变,康托展开用于求出某一格局的状态数。2.逆序数,通过求初始格局和目标格局逆序数,然后在比较两者的逆序数的奇偶性是否相同,如果奇偶性相同,则可以从初始格局变到目标格局。否则,不可达。3.在八数码中一个位置的数与它相邻的上下左右的位置的数交换不会影响这个格局的逆序数的奇偶性。比如有以下格局:原创 2017-04-08 10:51:36 · 18945 阅读 · 1 评论 -
【数据结构】安卓平台下深度优先搜索的应用--走迷宫
在游戏中,我们常常可以看到npc很聪明,自己能找到玩家,游戏中有地图,npc在地图中以特定的算法搜索以找到玩家。今天我们来看看一种基本的图搜索算法——深度优先搜索算法深度优先搜索算法讲的是1。从某个点开始,遍历所有与该点相连的点2。如果找到一个点并且该点没有访问过,则把这个点设为已访问3。对后面的点执行1,2操作。4。如果某个点所连接的所有点已被访问过,回溯,直到回溯到原创 2016-03-12 12:52:03 · 5345 阅读 · 0 评论 -
浅谈快速排序
快速排序的思想1.在数组中的低位到高位中取一个基准数(一般是直接取低位或者是高位,而不取低位和高位之间的位置),然后根据索引把数组里的元素依次与基准数来比较,比基准数小的扔一边,比基准数大的扔一边2.在数组左边执行第1步操作。3.在数组的右边执行第1步操作。我们可以看到,上面的流程是递归的套路。快速排序最坏的时间复杂度是:O(n2),平均时间复杂度是:O(n*log2n)#原创 2017-04-10 19:29:51 · 1072 阅读 · 0 评论 -
【数据结构】邻接矩阵表示法的图的深度广度优先遍历递归和非递归遍历
假设有以下结构的图:用邻接矩阵表示如下:因为他是无向图,我们可以发现他的矩阵是对角对称的。矩阵中每一行每一列都可以看成是一个顶点,矩阵中的元素表示着该顶点与其他顶点的关系,当元素的值为1说明它与对应列的顶点有边相连,如果他们的值为0,表示他们没有边相连。下面我们来看看我们怎么遍历这个图。1.深度优先遍历:假设我们从A这个顶点开始遍历,当访问到A点的时候它会找与A相连的第一个原创 2016-02-02 16:26:09 · 12352 阅读 · 0 评论 -
【数据结构】邻接表表示法的图的深度广度优先遍历递归和非递归遍历
图有多种表示方法,在 《无向邻接矩阵表示法的图的遍历》这篇文章中,讲了邻接矩阵表示法的遍历,这篇文章中将讨论邻接表表示法的图的遍历。邻接矩阵表示法在稀疏图(边少的图中)中比邻接矩阵表示法节省内存空间。不管以何种方式来表示,他们的遍历顺序是没有改变的。继续贴上图,方便我们理解。上面的图可以用下面的邻接表表示。左边的灰色区域表示各个顶点,我们可以用数组来表示,右边的黄色区域代表着各原创 2016-02-02 18:41:27 · 8998 阅读 · 1 评论 -
【数据结构】栈的应用之表达式计算器
表达式计算器是数据结构书籍里面的一个有趣的例子,感觉这里面已经有点编译原理的味道了,它利用栈来实现表达式的计算。原创 2015-08-12 19:08:33 · 5529 阅读 · 0 评论 -
【数据结构】二叉树的前中后序遍历递归和非递归实现
二叉树有很多操作,而二叉树的遍历只是其中的一个基本操作。二叉树的遍历方式有3种:前序遍历,中序遍历,后序遍历。前中后遍历顺序是根据什么时候遍历根节点来说的。原创 2016-01-28 22:24:36 · 7072 阅读 · 0 评论 -
【算法】递归的理解
从接触递归到现在有了半年时间了,期间写各种关于递归的算法,比如:汉诺塔,遍历二叉树,图的遍历,快速排序等。今天终于对递归的理解上了一个台阶,所以就趁热打铁,把它记录下来。我们都知道,递归调用的过程就是函数数据压栈的过程,先进后出,也就是当递归的条件不满足的时候,最后调用的函数先返回,先调用的函数数据最后返回,返回也是一层一层向下返回的。递归调用的过程虽然是压栈的过程,但是我们可以把这个过程原创 2016-02-22 14:41:04 · 5564 阅读 · 0 评论 -
【数据结构】二叉树的翻转递归与非递归实现
二叉树的翻转也是递归的过程,左子树转到右子树,右子树转到左子树。假设有这样的一棵二叉树:它翻转后应该是这样子的:代码实现:package 二叉树.翻转;import java.util.LinkedList;class BitNode{ //声明一颗树的节点 char data; BitNode LChild; BitNode RChild;}pu原创 2016-04-05 14:26:32 · 8291 阅读 · 0 评论 -
【Java】大数相减,不用BigInteger
描述两个长度超出常规整形变量上限的大数相减,请避免使用各语言内置大数处理库,如 Java.math.BigInteger 等。输入有 N 行测试数据,每一行有两个代表整数的字符串 a 和 b,长度超过百位。规定 a>=b,a, b > 0。 测试结果可以用 linux 小工具 bc进行测试是否正确。输出返回表示结果整数的字符串。输入样例 1231231...原创 2018-09-04 10:48:31 · 1349 阅读 · 0 评论