随笔分类 - 算法与数据结构
基础算法与数据结构
摘要:折半查找是在查找元素有序的情况下,一种很好的查找方法。 我们计算原始数据的个数n,这样我们就可以计算出中间mid = (1+n)/2 下面我们就看要查找的值key跟中间mid位的值即a[mid]进行比较,如果key>a[mid],则说明要查找的元素在后半部分,则把上面的1换成mid+1,如果keyint binarySearch(int a[],int n,int key);int binar...
阅读全文
摘要:广度优先遍历,这边就要涉及队列的处理,因为,我们一开始访问一个节点之后,访问跟这个结点直接相连的所有节点,这样相连的节点依次加入队列当中,保持队列的先进先出,每次出一个,再访问出的这个节点直接相连的节点,仍然依次进入队列当中。 这边我们知道队列的最大元素的个数,这边采用循环队列的结构。 typedef struct { int data[MAXSIZE]; in...
阅读全文
摘要:深度优先遍历,这个跟树中的遍历类似,做深度遍历就是访问一个节点之后,在访问这个节点的子节点,依次下去是一个递归的过程。 具体代码: void DFS(MGraph g ,int i) { int j; visited[i]=1; printf("%c",g.vexs[i]); for(j = 0;j 2: 3: #define ...
阅读全文
摘要:Kruscal算法也是最小生成树算法,这个算法感觉起来可能更直观一点,我们要求最小生成树,我们可以依次找图中的最小权重所在的边,只要这些边不构成回路就添加,知道覆盖所有的顶点。 算法的具体过程: 1、将权重排序,要对权重排序,在邻接矩阵中权重处理不是很方便,构建边的结构 typedef struct { int begin; int end; i...
阅读全文
摘要:prim算法是求最小生成树,这个算法的基本思路就是我从v0 开始找到跟v0 连接的所有边,找到权重最小的边以及跟这个边相连的顶点Vx,然后依次查找V0和Vx相邻的边中权重最小的,把相连的顶点加入。 在写程序的时候,我们有几点技巧可以使用。 1、跟v0相连的边的权重以及跟Vx相连边的权重都是顶点数减1,这样我们在保存权重的时候,就可以直接构建一个数组保存当前顶点跟所有其他相连边的权重中小的,具体...
阅读全文
摘要:求最短路径的第二种算法Floyd算法,前一个算法Dijkstra的时间复杂度是O(n3) 这个算法的时间复杂度也是O(n3),不过这个算法更加精妙。 其基本思想:我们从任意节点A到任意节点B的最短距离不外乎2种可能,1是直接A到B,2是从A经过若干个节点X后到B。 我们假设Dis(AB)为节点A到节点B的最短路径距离,那么我们要做的事就是检查Dis(AX)+Dis(XB)是否小于Dis(AB...
阅读全文
摘要:求最短路径,这个算法没有什么特别的,对于算法入门,这个算法要熟练的写出来。 刚刚写了一遍,现在再写一遍,把思路一遍写出。c语言形式。 首先是图的数据结构,处理这个算法的时候用的是图的邻接矩阵。 考虑一下定义,有图中顶点,构成的邻接矩阵,顶点数与边数。 typedef struct MGraph { char vexs[MAXVEX]; int arc[MAXVEX][MAXVEX];...
阅读全文
摘要:学计算机跟学武功一样,一定要注意内功修为,张无忌学习了九阳真经之后十几个时辰就学好了别人要花几十年的功夫的乾坤大挪移;技术也要专一,慕容复了解百家武学却敌不过乔峰一招降龙十八掌。 对于程序开发这个跟造房子一样,这个是后话了。 对于计算机的基础分为三块。 1、专业基础-算法与数据结构 2、数学基础-数学基础太多了,高等数学、线性代数、概率与统计、离散数学等等 3、英语 数学英语的基础后面...
阅读全文
摘要:这两天在装ubuntu,试试里面的线程库的时候遇到了llvm这个东西。llvm是什么,查了一下听起来很不错http://zh.wikipedia.org/wiki/LLVM这个是编译和使用http://clang.llvm.org/get_started.html#build效果明显,有待研究,做一个备注
阅读全文
摘要:在用c++写着点东西,但是这两天看了看面试题,网上的微软面试100题之类的,发现自己的基础还是很差的。做了5道之后就感觉力不从心了,于是希望自己通过看这个方面的资料,写点东西,每天一点点的坚持吧。 看了这个博客http://blog.csdn.net/v_july_v/article/details/6460494总结得挺好的。 1、定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串...
阅读全文
摘要:哈弗曼树,在数据结构这门课中,已经学过,也叫做最优二叉树。广泛的应用于数据文件压缩中。根据百度百科给出基本术语1、路径和路径长度 在一棵树中,从一个结点往下可以达到的孩子或子孙结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。2、结点的权及带权路径长度(码长)若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权路径长度为:从根结点到该结点之间的路径长度与该结点的权的乘积。3、树的带权路径长度(树的总码长)树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为WPL。好了,下面就来回顾一下整个一个
阅读全文

浙公网安备 33010602011771号