
数据结构与算法
Airsolstice
你的愚蠢掩盖不了你的丑,孤单的我在漫漫长夜中游走、
展开
-
平衡树之AVL树旋转
大一就学了数据结构,当听到AVL树的时候就很蒙,也没认真。最近开始认真看,那书上讲的何止是蒙,讲的我是莫名其妙。不知道为什么那么多人喜欢严蔚敏版的数据结构,没觉得好在哪里,讲的少,讲的粗略,讲的也是莫名其妙。可能是我的问题把,所以在网上搜了相关资料的,我一直认为,一个理论要马上接收,其实挺难的,我的做法是先不管那么多,掌握基本的操作就行,在你每次用的过程中,总会关心到某些值得推敲的地方,这样的抛砖转载 2016-03-31 21:03:46 · 614 阅读 · 0 评论 -
基于DFS的求割点算法
基于DFS的求割点算法:笔记;图的双连通性:就是图中不存在割点的图双连通性的作用:具有双连通性的网络,不会因为一个局域网瘫痪,而导致网络全部瘫痪;因为,每个点与点的联系在双连通图中不是唯一的,就是说去掉一个点这个同不会变成两个不关联的点集实现思路:**对每一个点都都进行测试,当删除这个点和这个点的相关边,DFS搜索能否一次遍历完所有点,如果可以,则这个点不是割点;如果不原创 2016-03-28 19:10:12 · 1402 阅读 · 1 评论 -
基于DFS的求欧拉回路算法
1、拓扑排序KAHN算法实现:设一个有向图,存在一个入度=0,并有出度的点;**遍历所有点的出度和入度,找到入度为0的点,显示该点**并且去掉图中有关该点的狐**重复上述两个操作执行过程中出现的情况:**找不到入度=0的点;所有点都输出了。这个输出的序列就是拓扑序列**找不到入度=0的点;但还有点没输出。这说明这个图有环。这些剩下的点,必然存在一个环**原创 2016-03-26 21:32:39 · 8423 阅读 · 0 评论 -
最大流算法(网络流问题)
3、最大流算法(网络流问题):对于流的概念是,我觉得就是管道;而管道就存在一种限制,大的管道的通量要小于等于小的管道的最大的通量。算法实现(基于DFS,我自己的思路):**按照DFS的思想,先找到一条到目的点的路径,得到这个路径的最小权值存起来**对于第一步用到的边,减去最小权值后(如果权值为0,则说明这个边已经走不通了),再用DFS算法,找到一条可达目的点路径,得到这个路径的最小原创 2016-03-28 19:06:50 · 759 阅读 · 0 评论 -
最小生成树算法
最小生成树算法:这篇博客写的,正是我想要的,所以就不写那么多了,记着就好了,肯定有用:http://blog.youkuaiyun.com/fengchaokobe/article/details/7521780但是里面我觉得Prim算法说的有点朦胧:Prim算法其实是通过已有的点集可能到达的下一个点所产生的边集中,选一条最小权值的边走下去这一步的变化可原创 2016-03-28 19:08:35 · 344 阅读 · 0 评论 -
最短路径算法
最短路径算法:最短路径 ,迪杰斯特拉算法,就是基于广度优先的思想的,也是贪婪算法的思想广度优先搜索(迪杰斯特拉算法):这个算法实现:**从起点开始,首先标记起点为已知,这时,我们就好像能看到这个点能通往其他点的路了(这就是边的两个点)**维护一个记录表,记录下这个点能通往下一个点路径和通向第一个点所需要的权重,并把下一个所有可达点入队**从队列中取一个点出来,再次标原创 2016-03-28 19:04:20 · 524 阅读 · 0 评论 -
拓扑排序
拓扑排序KAHN算法实现:设一个有向图,存在一个入度=0,并有出度的点**遍历所有点的出度和入度,找到入度为0的点,将点全部入队**依次出队点,去掉图中有关该点的狐,同时将入度为0的点入队**直到队列为空执行过程中出现的情况:**找不到入度=0的点;所有点都输出了。这个输出的序列就是拓扑序列**找不到入度=0的点;但还有点没输出。这说明这个图有环。这些剩下的点,必然原创 2016-03-28 19:02:15 · 497 阅读 · 0 评论 -
递归算法思想&&一些简单算法实现
1、递归算法需要满足的条件:a、有最小值的边界b、结果是通过一步一步的结果层层退出b、每一步的执行动作应该是一样的d、满足所有的情况例一:假设在程序中只能输出0~9这是个数,如何输出一个大于9的两位一上的是数原创 2016-03-10 19:20:25 · 1618 阅读 · 0 评论 -
排序算法白话实现
排序的实现过程,这个比任何理论都好懂,如果要定义的话,直接百科搜就是了1、冒泡排序:34,8,64,51,32,2134与8比较:8,34,64,51,32,2134与64比较:8,34,64,51,32,2164与51比较:8,34,51,64,32,2164与32比较:8,34,51,32,64,2164与21比较:8,34,51,32,21,64(这样原创 2016-03-26 19:19:59 · 1095 阅读 · 1 评论 -
不相交集类算法
1、不相交集类的算法:这是处理等价问题的一种算法,这里的等价指的是集合,a与b等价,是指a∈S,b∈S。通过不相交集类的两个基本操作find就可找出a和b的集合标志是否一致,若一致则说明它们是一个集合的。当然,对于集合的表示,用的是森林的数据结构。集合的标志就是根节点,若根节点一样,就说明集合一样。而除了唯一的根节点之外,剩下的节点里面存放都是父节点的标志。因此,我们只需要一个数据就能表示一个原创 2016-03-26 19:10:11 · 3150 阅读 · 0 评论 -
一些比较简单的算法
今天被提起,发现很多细节,都是算法啊,我居然以前都没注意到,唉,笨人,多做点笔记为好***对于交换两个数:既然是算法,自认不能用一个变量来当中介,这样空间复杂度就相对高。 /** * 通过算术运算交换 * @param a * @param b */ public void exchangeTwoNumByArithmetic(int a, i原创 2016-04-06 16:51:07 · 600 阅读 · 0 评论 -
KMP算法(通俗易懂的字符串比较算法)
作者: 阮一峰日期: 2013年5月 1日字符串匹配是计算机的基本任务之一。举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Don转载 2016-04-06 16:03:57 · 1556 阅读 · 0 评论 -
哈希算法&&Java中的HashMap实现原理
HashMap是通过一个Entry的数组实现的。而Entry的结构有三个属性,key,value,next。如果在c中,我们遇到next想到的必然是指针,其实在java这就是个指针。每次通过hashcode的值,来散列存储数据。而hashcode()这个犯法最简单的算法是:String中的哈希算法:public int hashCode() { int h = has原创 2016-04-05 19:14:43 · 8065 阅读 · 0 评论 -
mysql基本数据库操作
1,将表中数据导出到文件中eg:select * from tb_contact into outfile '/tmp/contact.txt' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n';2,将文件数据导入到数据库表中(local关键字指定文件路径为客户机,默认为服务器路原创 2017-03-01 14:13:31 · 340 阅读 · 0 评论